簡體   English   中英

如何使用 Automake 鏈接到共享庫

[英]How to link to a shared library using Automake

在 IDE 中度過了我的大部分開發生涯后,我目前正在嘗試擴展一個使用 Autoconf 和 Automake 的開源項目 C-ICAP,因此對於那些更熟悉該工具集的人來說,這可能是一個顯而易見的答案。 我正在嘗試向使用我們專有共享庫的 ICAP 服務添加一項新服務,但無法對 Makefile.am 進行必要的更新以將我們的庫添加到新服務的鏈接操作中。

我需要創建相當於

-lmylibrary

我試過以下,

LDADD = mylibrary
LDADD = libmylibrary.so
LIBADD = mylibrary
LIBADD = libmylibrary.so

但是當我“制作”項目時,構建日志中沒有提到“mylibrary”。 當我嘗試

LIBS = mylibrary

'mylibrary' 出現在構建日志中,但在 build.so 文件上運行ldd不包括 'mylibrary'。

該項目正在安裝到 Ubuntu 主機上。 我們的“libmylibrary.so”安裝到/usr/lib中。

在更新到 Makefile.am 后,我正在運行以下命令序列

aclocal
autoconf
automake --add-missing
./configure --with-c-icap=/usr/local/c-icap --prefix=/usr/local/c-icap
make

為了使新服務鏈接到已安裝的共享庫,我缺少什么?

由於您嘗試將此添加到共享的 object構建中,因此您正在尋找的是libfoo_la_LIBADD = -lmylibrary 不支持LIBADD作為 Makefile.am 中的全局Makefile.am

請注意,默認情況下,鏈接編輯器現在會丟棄任何添加到鏈接行的庫,如果它們不用於滿足源對象中未定義的符號。 如果您想強制鏈接到您的庫,則必須使用libfoo_la_LIBADD = -Wl,--no-as-needed -lmylibrary -Wl,--as-needed ,但這可能會使構建變得相當復雜。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM