gpt4 book ai didi

c++ - 使用 CMake 强制进行 32 位编译的正确方法

转载 作者:IT老高 更新时间:2023-10-28 13:58:18 24 4
gpt4 key购买 nike

很抱歉,有很多类似的问题,但我确实发现谷歌搜索 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com