cmake - 强制 cmake 创建 32 位库而不是 64 位库
问题描述
我目前正在尝试在运行 Debian 9 映像的虚拟机中为 Raspberry Pi 相机构建和链接库。有问题的库可以在https://github.com/cedricve/raspicam找到。该库在 VM 中构建良好,我的程序也构建良好,但链接器失败。构建行和错误消息是(有问题的库是raspicam
):
arm-linux-gnueabihf-g++ -o Linux-rpi3/video build/main.cpp.o Linux-rpi3/lib/libvideo.a -lcommon -lclsocket -lGeographic -llog4cplus -lpthread -lshp -lsodium -L./Linux-rpi3/lib -L../common/Linux-rpi3/lib -L../3px/civetweb-1.6/Linux-rpi3 -L../3px/clsockets_1_4_2.mod/Linux-rpi3/lib -L../3px/GeographicLib-1.49/Linux-rpi3/lib -L../3px/libsodium-1.0.3/Linux-rpi3/lib -L../3px/log4cplus-1.1.3-rc3/Linux-rpi3/lib -L../3px/shapelib-1.3.0/Linux-rpi3/lib -L/opt/local/lib -L./3px/raspicam/src -lraspicam
//usr/local/lib/libraspicam.so: file not recognized: File format not recognized
collect2: error: ld returned 1 exit status
我有理由相信这是 32 位程序和 64 位库之间的不匹配。如果我objdump -a
在编译的库上运行,它会返回
libraspicam.so: file format elf64-x86-64
同时,如果我在没有依赖库并objdump -a
在可执行文件上运行的部分的情况下编译程序,它会返回
video: file format elf32-little
由于我对 cmake 不是很熟悉,所以我不知道我需要在库中进行哪些更改才能构建它elf32-little
,以便让程序正确链接。是否可以将此库构建为 32 位,如果可以,我需要做什么?
解决方案
推荐阅读
- amazon-web-services - 如何将 SpringBoot 微服务应用程序(RESTful)作为无服务器部署到 AWS Lambda?
- javascript - Google Apps Script: submit form + keep window content + make browser make an offer to save name/password
- machine-learning - 任意大动作/状态空间中的强化学习
- oracle - 使用 GET_FILE_NAME Oracle Forms 无法打开对话框
- javascript - Edittext 箭头 [Indesign 脚本]
- python - 在python中绑定两个csv
- powerbi - 按总和对类别进行排名 (Power BI)
- android - Android TTS 为离线语音返回“超出配额”
- sql - oracle 10g 使用更新和连接
- python - Python:两个简单的函数,为什么第一个比第二个快