Rav*_*ash 4 c macos xcode history readline
我是libhistory的新手,因此我正在看readline库中找到的示例。使用以下命令在命令提示符下进行编译:
gcc -o ./a.out /usr/local/share/readline/histexamp.c -lreadline -L/usr/local/lib/
Run Code Online (Sandbox Code Playgroud)它编译并维护历史。
然后用相同的文件创建一个xcode项目,并链接到readline库,它可以正常编译。但是当我运行时,它不会保留历史记录,而在枚举历史记录条目时会崩溃。经过一些试验后,我发现-isysroot参数是导致此问题的原因:
-isysroot /Developer/SDKs/MacOSX10.6.sdk
Run Code Online (Sandbox Code Playgroud) gcc手册页上说isysroot类似于--sysroot选项,但仅适用于头文件。
为什么同一程序在此选项下的行为有所不同?
-isysroot用于定义您用来构建的SDK。如果使用10.6 SDK进行构建,然后尝试在OS X 10.5上运行,则可能会失败。您应该使用与程序所需的最低操作系统相对应的SDK进行构建(以实现最大的向后兼容性)。