gcc linker выдаёт неожиданно так (clang нормально)

Программа правильно связана с clang, но не с gcc:

% CC=clang make
clang -I/usr/include/lua5.1 -llua5.1 -shared -fPIC -o mk_lua.so mk_lua.c
% ldd mk_lua.so 
   linux-vdso.so.1 =>  (0x00007fff4effe000)
   liblua5.1.so.0 => /usr/lib/x86_64-linux-gnu/liblua5.1.so.0 (0x00007fa94b316000)
   libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa94af51000)
   libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa94ac4a000)
   libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fa94aa46000)
   /lib64/ld-linux-x86-64.so.2 (0x00007fa94b752000)

GCC дает разные результаты (конечно, приводит к неработающей разделяемой библиотеке).

% CC=gcc make
gcc -I/usr/include/lua5.1 -llua5.1 -shared -fPIC -o mk_lua.so mk_lua.c
% ldd mk_lua.so 
   linux-vdso.so.1 =>  (0x00007fffcf3fe000)
   libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe2e3e06000)
   /lib64/ld-linux-x86-64.so.2 (0x00007fe2e43d9000)
  • gcc версия 4.9.1 (Ubuntu 4.9.1-16ubuntu6)
  • Версия Ubuntu clang 3.5.0-4ubuntu2 (tags/RELEASE_350/final) (на основе LLVM 3.5.0)

Параметры линкера идентичны. Что здесь происходит?

Полный источник здесь.

0 ответов

Другие вопросы по тегам