首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使gcc和链接者在交叉编译时找到独立的库?

问如何使gcc和链接者在交叉编译时找到独立的库?
EN

Stack Overflow用户
提问于 2022-06-25 11:34:47
回答 1查看 507关注 0票数 1

我正在使用以下设置交叉编译armv7l linux上的x86_64 linux:

toolchain.cmake:

代码语言:javascript
复制
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)

set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++)

set(CMAKE_FIND_ROOT_PATH /usr/arm-linux-gnueabihf /tmp/rpi-root)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

CMakeLists.txt:

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.13)
project(cross-compile-demo C)

find_package(LibArchive REQUIRED)

add_executable(demo main.c)
target_link_libraries(demo PRIVATE LibArchive::LibArchive)

main.c:

代码语言:javascript
复制
#include <stdio.h>
#include <archive.h>

int main(int argc, char const *argv[])
{
    archive_bzlib_version();
    return 0;
}

当我使用忍者构建项目时,由于“找不到库”错误,它失败了:

代码语言:javascript
复制
[william@NoteBook build](master)$ ninja -v
[1/2] /usr/bin/arm-linux-gnueabihf-gcc  -isystem /tmp/rpi-root/usr/include -O3 -DNDEBUG -MD -MT CMakeFiles/demo.dir/main.c.o -MF CMakeFiles/demo.dir/main.c.o.d -o CMakeFiles/demo.dir/main.c.o -c /home/william/Downloads/cross-compile/main.c
[2/2] : && /usr/bin/arm-linux-gnueabihf-gcc -O3 -DNDEBUG  CMakeFiles/demo.dir/main.c.o -o demo  -Wl,-rpath,/tmp/rpi-root/usr/lib  /tmp/rpi-root/usr/lib/libarchive.so && :
FAILED: demo 
: && /usr/bin/arm-linux-gnueabihf-gcc -O3 -DNDEBUG  CMakeFiles/demo.dir/main.c.o -o demo  -Wl,-rpath,/tmp/rpi-root/usr/lib  /tmp/rpi-root/usr/lib/libarchive.so && :
/usr/bin/arm-linux-gnueabihf-ld: warning: libcrypto.so.1.1, needed by /tmp/rpi-root/usr/lib/libarchive.so, not found (try using -rpath or -rpath-link)
/usr/bin/arm-linux-gnueabihf-ld: warning: libacl.so.1, needed by /tmp/rpi-root/usr/lib/libarchive.so, not found (try using -rpath or -rpath-link)
/usr/bin/arm-linux-gnueabihf-ld: warning: libexpat.so.1, needed by /tmp/rpi-root/usr/lib/libarchive.so, not found (try using -rpath or -rpath-link)
/usr/bin/arm-linux-gnueabihf-ld: warning: liblzma.so.5, needed by /tmp/rpi-root/usr/lib/libarchive.so, not found (try using -rpath or -rpath-link)
/usr/bin/arm-linux-gnueabihf-ld: warning: libzstd.so.1, needed by /tmp/rpi-root/usr/lib/libarchive.so, not found (try using -rpath or -rpath-link)
/usr/bin/arm-linux-gnueabihf-ld: warning: liblz4.so.1, needed by /tmp/rpi-root/usr/lib/libarchive.so, not found (try using -rpath or -rpath-link)
/usr/bin/arm-linux-gnueabihf-ld: warning: libbz2.so.1.0, needed by /tmp/rpi-root/usr/lib/libarchive.so, not found (try using -rpath or -rpath-link)
/usr/bin/arm-linux-gnueabihf-ld: warning: libz.so.1, needed by /tmp/rpi-root/usr/lib/libarchive.so, not found (try using -rpath or -rpath-link)
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `EVP_MD_CTX_free@OPENSSL_1_1_0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `LZ4_resetStreamHC'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `LZ4_compress_HC'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `ZSTD_compressStream'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `LZ4_freeStreamHC'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `lzma_alone_decoder@XZ_5.0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `EVP_sha512@OPENSSL_1_1_0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `ZSTD_createDStream'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `EVP_sha256@OPENSSL_1_1_0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `lzma_raw_decoder@XZ_5.0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `EVP_MD_CTX_new@OPENSSL_1_1_0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `EVP_aes_192_ecb@OPENSSL_1_1_0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `lzma_properties_encode@XZ_5.0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `inflate'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `ZSTD_isError'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `ZSTD_minCLevel'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `XML_ParserCreate'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `lzma_stream_decoder@XZ_5.0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `ZSTD_initCStream'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `ZSTD_CCtx_setParameter'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `BZ2_bzlibVersion'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `crc32'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `lstat64@GLIBC_2.33'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `HMAC_CTX_free@OPENSSL_1_1_0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `LZ4_saveDictHC'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `lzma_stream_encoder_mt@XZ_5.2'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `LZ4_saveDict'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `acl_get_permset@ACL_1.0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `lzma_properties_size@XZ_5.0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `LZ4_freeStream'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `ZSTD_versionNumber'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `BZ2_bzDecompressInit'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `deflateReset'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `lzma_raw_encoder@XZ_5.0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `BZ2_bzDecompressEnd'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `deflate'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `XML_SetCharacterDataHandler'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `acl_get_fd@ACL_1.0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `lzma_stream_encoder@XZ_5.0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `acl_set_tag_type@ACL_1.0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `XML_ParserFree'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `HMAC_Init_ex@OPENSSL_1_1_0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `XML_SetUserData'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `BZ2_bzCompressInit'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `acl_clear_perms@ACL_1.0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `deflateInit2_'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `EVP_ripemd160@OPENSSL_1_1_0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `ZSTD_DStreamOutSize'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `ZSTD_freeCStream'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `XML_Parse'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `EVP_EncryptUpdate@OPENSSL_1_1_0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `EVP_sha384@OPENSSL_1_1_0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `BZ2_bzCompressEnd'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `fstatat64@GLIBC_2.33'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `deflateInit_'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `LZ4_compress_HC_continue'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `LZ4_decompress_safe_usingDict'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `lzma_crc32@XZ_5.0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `ZSTD_getErrorName'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `acl_add_perm@ACL_1.0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `inflateEnd'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `acl_set_file@ACL_1.0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `HMAC_CTX_new@OPENSSL_1_1_0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `ZSTD_initDStream'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `BZ2_bzCompress'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `LZ4_loadDict'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `inflateSetDictionary'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `acl_get_entry@ACL_1.0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `acl_get_perm@ACL_1.0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `lzma_end@XZ_5.0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `acl_free@ACL_1.0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `acl_set_qualifier@ACL_1.0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `lzma_code@XZ_5.0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `lzma_memusage@XZ_5.0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `ZSTD_CStreamOutSize'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `LZ4_compress_fast_continue'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `deflateEnd'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `lzma_cputhreads@XZ_5.2'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `LZ4_decompress_safe'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `EVP_CIPHER_CTX_free@OPENSSL_1_1_0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `BZ2_bzDecompress'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `fstat64@GLIBC_2.33'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `EVP_aes_128_ecb@OPENSSL_1_1_0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `acl_init@ACL_1.0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `inflateInit_'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `acl_set_fd@ACL_1.0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `ZSTD_decompressStream'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `lzma_properties_decode@XZ_5.0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `EVP_sha1@OPENSSL_1_1_0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `lzma_lzma_preset@XZ_5.0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `acl_get_file@ACL_1.0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `XML_SetElementHandler'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `inflateInit2_'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `LZ4_createStreamHC'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `EVP_DigestInit@OPENSSL_1_1_0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `EVP_DigestUpdate@OPENSSL_1_1_0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `lzma_alone_encoder@XZ_5.0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `ZSTD_endStream'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `inflateReset'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `EVP_md5@OPENSSL_1_1_0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `HMAC_Final@OPENSSL_1_1_0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `stat64@GLIBC_2.33'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `LZ4_createStream'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `LZ4_loadDictHC'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `PKCS5_PBKDF2_HMAC_SHA1@OPENSSL_1_1_0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `EVP_EncryptInit_ex@OPENSSL_1_1_0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `HMAC_Update@OPENSSL_1_1_0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `EVP_aes_256_ecb@OPENSSL_1_1_0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `acl_get_tag_type@ACL_1.0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `acl_get_qualifier@ACL_1.0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `ZSTD_createCStream'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `LZ4_compress_default'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `ZSTD_freeDStream'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `acl_create_entry@ACL_1.0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `EVP_CIPHER_CTX_new@OPENSSL_1_1_0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `mknod@GLIBC_2.33'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `EVP_DigestFinal@OPENSSL_1_1_0'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `ZSTD_maxCLevel'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

上述库确实存在于/tmp/rpi-root/usr/lib下。

代码语言:javascript
复制
[william@NoteBook ~]$ ls /tmp/rpi-root/usr/lib/libcrypto.so*
/tmp/rpi-root/usr/lib/libcrypto.so  /tmp/rpi-root/usr/lib/libcrypto.so.1.1

可能会有什么问题?

编辑1(用于-rpath-link的附加日志):

根据@n. 1.8e9-where's-my-share m.,应该使用rpath链接而不是rpath。我创建了一个具有以下内容的脚本:

代码语言:javascript
复制
#!/bin/bash
/usr/bin/arm-linux-gnueabihf-gcc -isystem /tmp/rpi-root/usr/include -O3 -DNDEBUG -o main.c.o -c /home/william/Downloads/cross-compile/main.c
/usr/bin/arm-linux-gnueabihf-gcc -O3 -DNDEBUG main.c.o -o demo -Wl,-rpath-link,/tmp/rpi-root/usr/lib  /tmp/rpi-root/usr/lib/libarchive.so

这个问题似乎已得到解决,但现在却找不到任何glibc的参考资料:

代码语言:javascript
复制
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `stat64@GLIBC_2.33'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `fstat64@GLIBC_2.33'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libcrypto.so.1.1: undefined reference to `dladdr@GLIBC_2.34'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libcrypto.so.1.1: undefined reference to `dlclose@GLIBC_2.34'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libcrypto.so.1.1: undefined reference to `fstat@GLIBC_2.33'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `fstatat64@GLIBC_2.33'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libcrypto.so.1.1: undefined reference to `dlerror@GLIBC_2.34'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libcrypto.so.1.1: undefined reference to `pthread_key_create@GLIBC_2.34'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libcrypto.so.1.1: undefined reference to `pthread_rwlock_unlock@GLIBC_2.34'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libcrypto.so.1.1: undefined reference to `pthread_setspecific@GLIBC_2.34'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/liblzma.so.5: undefined reference to `pthread_join@GLIBC_2.34'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libcrypto.so.1.1: undefined reference to `pthread_rwlock_destroy@GLIBC_2.34'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libcrypto.so.1.1: undefined reference to `pthread_rwlock_wrlock@GLIBC_2.34'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `mknod@GLIBC_2.33'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libarchive.so: undefined reference to `lstat64@GLIBC_2.33'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libcrypto.so.1.1: undefined reference to `dlsym@GLIBC_2.34'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libcrypto.so.1.1: undefined reference to `pthread_getspecific@GLIBC_2.34'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libcrypto.so.1.1: undefined reference to `pthread_key_delete@GLIBC_2.34'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libcrypto.so.1.1: undefined reference to `pthread_rwlock_init@GLIBC_2.34'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/liblzma.so.5: undefined reference to `pthread_condattr_setclock@GLIBC_2.34'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libcrypto.so.1.1: undefined reference to `stat@GLIBC_2.33'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libcrypto.so.1.1: undefined reference to `dlopen@GLIBC_2.34'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libcrypto.so.1.1: undefined reference to `pthread_once@GLIBC_2.34'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/libcrypto.so.1.1: undefined reference to `pthread_rwlock_rdlock@GLIBC_2.34'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/rpi-root/usr/lib/liblzma.so.5: undefined reference to `pthread_create@GLIBC_2.34'
collect2: error: ld returned 1 exit status
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-07 13:52:11

TL;DR

要解决这个问题,您可以:

  • 使用binutils的黄金链接器
  • 移动sysroot文件夹

下的库

较长版本

好吧,在做了一些研究并联系了开发者之后,有两个原因导致了这种情况:

首先,在包中有两个ld,一个是原始的gold,另一个是黄金ld。我在这个问题上用的是国防部。Gold ld不检查库依赖项,因此,如果使用gold ld,则不会发生错误。

其次,rpath无法找到依赖库的原因是,如果用sysroot选项配置了交叉bfd,则sysroot将始终添加到rpath路径中。您可以通过将--verbose添加到链接器来确认此问题:

代码语言:javascript
复制
libcrypto.so.1.1 needed by /tmp/rpi/usr/lib/libarchive.so
attempt to open /usr/arm-linux-gnueabihf/tmp/rpi/usr/lib/libcrypto.so.1.1 failed
attempt to open /usr/arm-linux-gnueabihf/usr/arm-linux-gnueabihf/lib/libcrypto.so.1.1 failed
attempt to open /usr/arm-linux-gnueabihf/usr/local/lib/libcrypto.so.1.1 failed
attempt to open /usr/arm-linux-gnueabihf/lib/libcrypto.so.1.1 failed
attempt to open /usr/arm-linux-gnueabihf/usr/lib/libcrypto.so.1.1 failed
attempt to open /usr/arm-linux-gnueabihf/tmp/rpi/usr/lib/libcrypto.so.1.1 failed
attempt to open /usr/arm-linux-gnueabihf/usr/arm-linux-gnueabihf/lib/libcrypto.so.1.1 failed
attempt to open /usr/arm-linux-gnueabihf/usr/local/lib/libcrypto.so.1.1 failed
attempt to open /usr/arm-linux-gnueabihf/lib/libcrypto.so.1.1 failed
attempt to open /usr/arm-linux-gnueabihf/usr/lib/libcrypto.so.1.1 failed

至于编辑部分中未定义的引用错误,这仅仅是因为/tmp/rpi-root/usr/lib/下的库是用不兼容的glibc版本编译的。

参考资料:

https://sourceware.org/bugzilla/show_bug.cgi?id=29288#c7

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72753515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档