-isysroot или SDKROOT проблема - PullRequest
       17

-isysroot или SDKROOT проблема

4 голосов
/ 17 февраля 2010

Я новичок в libhistory, поэтому я искал пример, найденный в библиотеке readline. Скомпилировал его в командной строке, используя:

gcc -o ./a.out /usr/local/share/readline/histexamp.c -lreadline -L/usr/local/lib/
Он компилирует и поддерживает историю.

Затем создала проект xcode с тем же файлом и соединила его с библиотекой readline. Но когда я запускаю, он не будет поддерживать историю и сбои при перечислении записей истории. После некоторых испытаний я обнаружил, что причиной этой проблемы является аргумент -isysroot:

-isysroot /Developer/SDKs/MacOSX10.6.sdk
Страница man gcc говорит, что isysroot похож на параметр --sysroot, но применяется только к заголовочным файлам.

Почему одна и та же программа ведет себя по-разному с этой опцией?

Ответы [ 2 ]

4 голосов
/ 04 августа 2011
-isysroot /Developer/SDKs/MacOSX10.6.sdk

системный корень перезапишет системный путь / usr / local и т. Д.

На мой взгляд, это проблематичный способ использования пути SDK в XCode. Это приведет к несуществующему пути, как /Developer/SDKs/MacOSX10.6.sdk/usr/local/lib/ если вы хотите выполнить поиск по ссылке пользователя -L / usr / local / lib /

Я не думаю, что вообще стоит менять sysroot только для того, чтобы использовать SDK

4 голосов
/ 17 февраля 2010

-isysroot используется для определения SDK, который вы собираете. Если вы соберете с помощью 10.6 SDK, а затем попробуете запустить на OS X 10.5, вы, вероятно, потерпите неудачу. Вы должны собрать с любым SDK, который соответствует минимально необходимой ОС для вашей программы (для максимальной обратной совместимости).

...