Разница между -shared и -Wl, -shared опций GCC - PullRequest
13 голосов
/ 07 января 2011

Я знаю, -Wl,-shared - это вариант ld . Я видел, как какой-то человек скомпилировал вот так:

$ gcc -shared -Wl,-soname,libtest.so -o libtest.so *.o

А кому-то это нравится

$ gcc -Wl,-shared -Wl,-soname,libtest.so -o libtest.so *.o

Итак, я хочу знать, есть ли разница между -shared и -Wl,-shared.

Спасибо.

Ответы [ 2 ]

13 голосов
/ 07 января 2011

Там - это разница между передачей -shared в gcc или -shared в ld (через -Wl). Передача -shared в GCC может включать или отключать другие флаги во время соединения. В частности, могут быть задействованы разные файлы crt*.

Для получения дополнительной информации, grep для -shared в каталоге и подкаталогах gcc/config/ GCC.

Редактировать: Чтобы привести конкретный пример: на i386 FreeBSD gcc -shared будет ссылаться в объектном файле crtendS.o, тогда как без -shared вместо этого он будет ссылаться на crtend.o. Таким образом, -shared и -Wl,-shared не эквивалентны.

0 голосов
/ 07 января 2011

Я не думаю, что есть какая-то разница.-shared не поддерживается gcc и передается компоновщику независимо от того, указали вы его -Wl или нет.-Wl параметр gcc используется для указания того, что список параметров, разделенных запятыми, должен передаваться компоновщику для дальнейшей обработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...