GnuCOBOL не генерирует ссылки ELF библиотеки динамических ссылок
Теперь GnuCOBOL, пакет Ubuntu - open-cobol.
Начиная с Ubuntu 14.04? компилятору не удается связать ссылки на динамические библиотеки для использования dlopen во время выполнения. Нет следов библиотеки в ldd
от gcc -l
библиотека ссылок намеки.
Это работало в течение длительного времени, и, кажется, что-то изменилось в ld
вызов или предположения?
Технические подробности на https://stackoverflow.com/questions/26227458/gnucobol-failing-to-find-dynamic-symbols-only-on-recent-ubuntu
Те же самые источники cobc, построенные на Fedora, генерируют двоичные файлы, где ldd
имеет записи библиотеки динамических ссылок. Функция CALL работает с 2006 года.
Если кто-нибудь знает о недавнем изменении на dlopen?, dlsym?, autotools? оптимизация линкера? (GnuCOBOL CALL является динамическим, эффективно по имени строки во время выполнения, и не передается через ld linkage) или ld.so.conf?
Предположение о переключении gcc? ldconfig по умолчанию?
GnuCOBOL затруднен, и было бы здорово, если бы кто-то мог указать, что нужно сделать, чтобы получить -l
библиотеки обратно в двоичные файлы ELF.
ура
1 ответ
Путь к исправлению, опубликованный в вопросе StackOverflow, указанном выше.
export COB_LDFLAGS='-Wl,--no-as-needed'
это простое решение, позволяющее обойти это изменение в оптимизации компоновщика. Реальное исправление будет немного глубже, но Петеш предложил намек, который удовлетворяет насущную потребность.