G ++ 4.6 добавляет пробел между -F и путем при вызове ld на Mac OS X - PullRequest
0 голосов
/ 01 февраля 2012

Я скомпилировал g ++ 4.6 для Mac OS X. Он работает нормально, если я не использую опцию -F, в этом случае я получаю ошибку:

ld: -F must be immediately followed by a directory path (no space)

В командной строке g ++ я сделалКонечно, между -F и папкой нет пробела, но, запустив g ++ с параметром -v, я действительно мог видеть, что g ++ вызывает ld, добавляя пробел после параметра -F.Что я могу сделать?

Я вполне уверен, что раньше у меня была проблема, но мне удалось ее решить.Я просто не помню, как это сделать.

Ответы [ 2 ]

0 голосов
/ 31 мая 2012

Вы можете использовать

-Wl,-F{path to your framework(s)} -framework {your framework}
0 голосов
/ 19 февраля 2012

Проблема здесь в том, что опция -F не ​​проходит проверку языка gcc - поскольку gcc сообщает, что эта опция недопустима для языка DRIVER (0x4000).

, хотя это все еще странно для меня, как причудливый и рабочий патч Я изменил gcc / c-family / c.opt и добавил язык драйвера к опции, чтобы он читал:

F
Driver C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
-F <dir>        Add <dir> to the end of the main framework include path

Для любое лучшее решение нужно отлаживать файлы gcc.c и opts-common.c, где он инициализирует параметры (поскольку я остановился на decode_cmdline_option (), где он проверяет «if (! Option_ok_for_language (option, lang_mask)))»)

...