2010-08-22 4 views
1

В последнее время я работаю над OS X. Вещи шли довольно peachy на некоторое время, пока каким-то образом ld не попал в мою систему, и теперь gcc не будет использовать dyld. Кроме того, все мои разделяемые библиотеки находятся в формате *.dylib, и ld по-прежнему игнорирует существование. Если я mv ld от PATH, gcc просто жалуется, что он не может найти ld.Force gcc использовать один компоновщик над другим

Пожалуйста, помогите мне вернуть GCC в нужное русло и использовать то, что нужно.

ответ

1

Вы можете попробовать некоторые опции gcc. Из man page:

 
-c Compile or assemble the source files, but do not link. The linking 
    stage simply is not done. The ultimate output is in the form of an 
    object file for each source file. 

Затем можно связать явным образом с помощью любого линкера вы хотите.

+0

Я считал это, но это похоже на большую часть взлома. Мне нравятся хаки, когда они веселые и краткосрочные исправления, но в долгосрочной перспективе им нужны реальные надежные замены. – Eli

1

Помогает ли симплицировать ld на dyld?

mv /usr/bin/ld /usr/bin/ld.old 
ln -s /usr/bin/dyld /usr/bin/ld 

Edit: фиксированная л.д. PARAMS заказ

+0

, по крайней мере, на моей системе, ln, похоже, работает в противоположном направлении, указанном вами. Теперь я только что написал над dyld и нужно снова схватить его за яблоко, * ворчать ворчать *. – Eli

+0

lol, вы правы, кроме как обычно, если файл уже существует, он бы не перезаписал его. Сожалею! – nicomen

+0

Возможно, вы ошибаетесь, не переписывая. К сожалению, я 'unlink'ed, и это полностью удаляет файл (что я получаю для зарядки вперед без чтения документации). FOREVER требуется загрузить xCode (единственный способ получить dyld) из apple, и мне просто пришлось перезапустить. Как только я получу эту работу и смогу проверить, я дам вам этот ответ, если он сработает, и я подозреваю, что так будет. – Eli

-2

взгляд на -Xlinker вариант

Я получил его от man gcc

вы можете удвоить чек, используя некоторые подробные параметры, как -v

0

Это ISN твой точный вопрос, но мне нужно было перейти на ld.gold, а для него at, опция -fuse-ld=gold для gcc была очень полезна.