LINUX.ORG.RU

gcc - сбока


0

0

собираю например так

gcc -o test test.c -lmaxx -lpthread

треды в проге не используються
т.е. все отлично собираеться
и так вот

gcc -o test test.c -lmaxx

однако когда смотрю бинарь ldd test
вижу в зависимостях pthread
т.е. gcc тупо что на вход дали в выход и пишет
даже не проверяя что либа нихрена не юзаеться

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

желающих ответить типа так убери либы да и все
прошу не беспокоиться
интерисует возможное решение конкретно этой задачи

anonymous

а ты попробуй линковать с какой-нить другой либой, например, -ljpeg.
сразу увидишь, что линковки с ней не будет.
а -lpthread слишком системная либа (POSIX(!)).
ЗЫ. а вообще:
<<UNIX не был разработан так, чтобы отгораживать своих
пользователей от глупостей, поскольку это отгородило бы их от
делания умных вещей.>> -- Дуг Гвин

saahriktu ★★★★★
()
Ответ на: комментарий от saahriktu

> а ты попробуй линковать с какой-нить другой либой

laptop% echo 'main(){}' > main.c                                  /home/vsb/tmp
laptop% gcc main.c -o test -lX11                                  /home/vsb/tmp
laptop% ldd ./test                                                /home/vsb/tmp
        linux-gate.so.1 =>  (0xffffe000)
        libX11.so.6 => /usr/lib/libX11.so.6 (0xb7eb8000)
        libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7d6b000)
        libXau.so.6 => /usr/lib/libXau.so.6 (0xb7d67000)
        libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb7d62000)
        libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb7d5e000)
        /lib/ld-linux.so.2 (0xb7fb3000)

и?

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

%echo 'main(){}' > main.c
%gcc main.c -o test -ljpeg
%ldd ./test
linux-vdso.so.1 => (0x00007fffeb7fd000)
libc.so.6 => /lib/libc.so.6 (0x00002b13bf554000)
/lib64/ld-linux-x86-64.so.2 (0x00002b13bf438000)
%gcc main.c -o test -lpci
%ldd ./test
linux-vdso.so.1 => (0x00007fff7dbfd000)
libc.so.6 => /lib/libc.so.6 (0x00002b9b2cffc000)
/lib64/ld-linux-x86-64.so.2 (0x00002b9b2cee0000)
%gcc main.c -o test -ly
%ldd ./test
linux-vdso.so.1 => (0x00007fffe89fd000)
libc.so.6 => /lib/libc.so.6 (0x00002b67c228d000)
/lib64/ld-linux-x86-64.so.2 (0x00002b67c2171000)
%gcc main.c -o test -lfl
%ldd ./test
linux-vdso.so.1 => (0x00007fff215fd000)
libc.so.6 => /lib/libc.so.6 (0x00002abb895cf000)
/lib64/ld-linux-x86-64.so.2 (0x00002abb894b3000)
%

saahriktu ★★★★★
()


$ readelf --dynamic /some/path/libmaxx.so | grep libpthread

посмотреть, что выводит эта команда. если в выводе вдруг обнаружится libpthread.so - подумать.

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от eXire

2 eXire
Спасибо, помогло,
и даже натолкнуло на умную мысль почитать
ман по линкеру, которая как-то раньше не пришла...
:)

2 klalafuda
Тоже спасибо, но мысль глянуть зависимости либы
пришла еще до того как задал вопрос, не его не решила.
;)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.