Ошибка ссылки: использование gcc 4.5.2 на RHEL 6.0 - я не понимаю - PullRequest
1 голос
/ 05 января 2012

Вот команда и ошибка.

gcc --shared  \
        -m64 \
        -shared-libgcc \
        -Wl,--whole-archive ./release64/*.a
/usr/lib64/libc_nonshared.a(elf-init.oS): In function `__libc_csu_init':
(.text+0x1d): undefined reference to `__init_array_end'
/usr/bin/ld: /usr/lib64/libc_nonshared.a(elf-init.oS): relocation R_X86_64_PC32 against undefined hidden symbol `__init_array_end' can not be used when making a shared object
/usr/bin/ld: final link failed: Bad value
collect2: ld returned 1 exit status
make: *** [build] Error 1

Что это значит?

1 Ответ

6 голосов
/ 05 января 2012

Оставляя «зависший» параметр --whole-archive, вы обманываете GCC, пытаясь связать код, скомпилированный без -fPIC (из libc_nonshared.a), в общую библиотеку. Не делай этого . Сделайте это вместо:

gcc -shared ... -Wl,--whole-archive release64/*.a -Wl,--no-whole-archive
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...