首页 > 解决方案 > 强制 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 位,如果可以,我需要做什么?

标签: cmakeraspberry-pidebian

解决方案


推荐阅读