将 Zlib 与源代码编译链接起来

将 Zlib 与源代码编译链接起来

我按照以下步骤编译了 Libz:

wget -c --no-check-certificate https://zlib.net/zlib-1.2.12.tar.gz
./configure --prefix=/home/zlib1/
make 
make install

同样,我已经编译了 OpenSSL 和 cURL。我.so在 Makefile 中链接了相应的(共享库文件),如下所示:

export LD_RUN_PATH=$(PWD)/3rdparty/lib/zlib/:$(PWD)/3rdparty/lib/curl/:$(PWD)/3rdparty/lib/openssl/ 

LDFLAGS  = -L$(PWD)/3rdparty/lib/zlib $(LIBS) -L$(PWD)/3rdparty/lib/openssl -L$(PWD)/3rdparty/lib/curl $(LIBS_USR)

其中LIBS = -lzLIBS_USR =-lcurl -lpthread -lcrypto -lssl

当我使用 Makefile 进行编译时,它成功了。

当我观察ldd <binary>(编译 Makefile 之后)时,我发现 Zlib 正在采用系统库路径,即使我已经给出了绝对路径……所有其他包都采用绝对路径。

ldd输出:

libcurl.so.4 => /home/3rdparty/lib/curl/libcurl.so.4
libpthread.so.0 => /lib/aarch64-linux-gnu/libpthread.so.0 (0x00000055018f7000)
libcrypto.so.1.1 =>  /home/3rdparty/lib/openssl/libcrypto.so.1.1 (0x0000005501927000)
libssl.so.1.1 =>  /home/3rdparty/lib/openssl/libssl.so.1.1 (0x0000005501bd9000)
libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000005501c9e000)
    /lib/ld-linux-aarch64.so.1 (0x0000005500000000)
libz.so.1 => /lib/aarch64-linux-gnu/libz.so.1 (0x0000005501e11000)

为什么 zlib 采用系统路径而不是绝对路径?

我该如何解决这个问题?

Openssl、curl 和 zlib 使用源代码进行编译,并且成功。

相关内容