抱歉,有很多类似的问题,但是我确实发现针对CMake查询使用谷歌搜索总是会产生相似但不相同的场景,冲突的CMake命令等等!
我需要强制我的项目构建32位二进制文件,因为我必须链接到仅以32位形式提供的库。我是根据以下错误消息诊断出来的:
/usr/bin/ld: i386 architecture of input file `*external-32bit-lib*' is incompatible with i386:x86-64 output
因此,根据我的收集,我应该使用:
set (CMAKE_CXX_FLAGS "-m32")
这确实改变了事情-我现在遇到一些错误,例如:
/usr/bin/ld: i386 architecture of input file `*project-output-lib*' is incompatible with i386:x86-64 output
并且对于外部库仍然会遇到相同的错误。我认为这是因为
-m32
使gcc生成了32位二进制文件,但是ld仍在尝试64位输出吗?进一步谷歌搜索这个问题并没有成功,所以如果有人可以验证我的观点并给出正确的解决方法,我将非常感激!非常感谢!
最佳答案
如果要使用cmake编译和链接32位,请使用以下代码创建库和二进制文件:
创建库:
add_library(mylib SHARED my_source.c)
set_target_properties(mylib PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32")
创建可执行文件:
add_executable(mybin sources.c)
set_target_properties(mybin PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32")
关于c++ - 使用CMake强制执行32位编译的正确方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5805874/