gpt4 book ai didi

c - 仅在 Mac 上使用 -O2 编译时 undefined symbol

转载 作者:太空宇宙 更新时间:2023-11-04 04:09:29 25 4
gpt4 key购买 nike

我正在开发一个必须在 linux 和 mac os X 上编译的库。到目前为止,我没有遇到任何问题,使用“-g”编译在这两个操作系统下都运行良好。

我尝试通过一些优化(“-O2”)进行编译,它在 linux 下运行良好,但是当我尝试在 mac os X 下将程序与我的库链接时,我得到一个 undefined symbol 。

有人知道我应该寻找什么吗?

nm mylib.a | grep _the_symbol

这对 linux 和 mac 返回相同的东西(在 linux 下没有前导下划线):

154:00000018 C _the_symbol
377: U _the_symbol

这是使用该库的程序在 linux 下的编译行:

/usr/bin/gcc  -std=c99   CMakeFiles/prod-cons.dir/prod-cons.c.o  -o prod-cons -rdynamic -L/home/claferri/dev/build/src ../src/libckaapi.a -lpthread -Wl,-rpath,/home/claferri/dev/build/src

在 mac 下:

/usr/bin/gcc  -std=c99 -Wl,-search_paths_first -headerpad_max_install_names -fPIC CMakeFiles/prod-cons.dir/prod-cons.c.o  -o prod-cons  -L/Volumes/Data/claferri/Work/build/src ../src/libckaapi.a /usr/lib/libpthread.dylib 

最佳答案

这是对解决方法的猜测:尝试使用 -fno-common 标志构建库。如果您对此变量有多个定义,则需要将“extern”添加到除一个之外的所有定义中。

关于c - 仅在 Mac 上使用 -O2 编译时 undefined symbol ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/825315/

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