-isysroot或SDKROOT问题

问题描述 投票:4回答:2

我是libhistory的新手,所以我正在查看使用readline库找到的示例。使用以下命令在命令提示符下编译:

gcc -o ./a.out /usr/local/share/readline/histexamp.c -lreadline -L/usr/local/lib/
It compiles and maintains history.

然后创建一个具有相同文件的xcode项目,并链接到readline库,它编译得很好。但是当我运行时,它不会保留历史记录并在枚举历史记录条目时崩溃。经过一些试验后,我发现-isysroot参数是造成这个问题的原因:

-isysroot /Developer/SDKs/MacOSX10.6.sdk
The gcc man page says isysroot is like the --sysroot option, but applies only to header files.

为什么同一程序对此选项的行为有所不同?

c xcode macos history readline
2个回答
4
投票

-isysroot用于定义您使用的SDK。如果使用10.6 SDK构建然后尝试在OS X 10.5上运行,那么您可能会失败。您应该使用与程序所需的最低操作系统相对应的SDK进行构建(以实现最大的向后兼容性)。


4
投票
-isysroot /Developer/SDKs/MacOSX10.6.sdk

sysroot将覆盖系统路径/ usr / local等。

在我看来,使用XCode的SDK路径是一种有问题的方法。如果要在用户链接-L / usr / local / lib /中搜索,它将导致不存在的路径,如/Developer/SDKs/MacOSX10.6.sdk/usr/local/lib/

我不认为只是为了使用SDK而改变sysroot是一个好主意

© www.soinside.com 2019 - 2024. All rights reserved.