gpt4 book ai didi

arm - 链接到 libssh 时为 ARM 进行交叉编译 - libssh.so : file not recognized

转载 作者:行者123 更新时间:2023-12-02 04:39:54 25 4
gpt4 key购买 nike

我想知道在使用 ARM 的 Sourcery 工具链进行交叉编译时是否可以将我的应用程序链接到 libssh。我的主机系统是 Ubuntu x86_64

:~/c/ssh$ arm-none-linux-gnueabi-gcc ssh.c -o arm `pkg-config --cflags --libs libssh`
cc1: warning: include location "/usr/local/include" is unsafe for cross-compilation [-Wpoison-system-directories]
/home/user/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/bin/../lib/gcc/arm-none-linux-gnueabi/4.6.1/../../../../arm-none-linux-gnueabi/bin/ld: warning: library search path "/usr/local/lib" is unsafe for cross-compilation
/usr/local/lib/libssh.so: file not recognized: File format not recognized
collect2: ld returned 1 exit status

我的应用程序使用 gcc 使用此命令编译得很好:

gcc ssh.c -o ssh -lssh

在交叉编译时添加相同的 -lssh 标志会导致以下错误:

:~/c/ssh$ arm-none-linux-gnueabi-gcc ssh.c -o arm -lssh
ssh.c:2:49: fatal error: libssh/libssh.h: No such file or directory
compilation terminated.

最佳答案

您的第一次尝试是尝试从您的主机环境而不是您的目标环境链接 libssh.o。这是因为命令“pkg-config --cflags --libs libssh”返回了主机上 libssh 的包配置。

您需要获取或编译专门用于目标环境 (ARM) 的 libssh 副本。

如果自己编译(可能是你唯一的选择,至少对我来说快速谷歌没有显示任何合适的预构建包)那么你应该指定一个单独的安装目录,例如。在您的主目录中的某个地方。这将导致单独的 include 和 lib 目录,包含交叉编译的 libssh,您可以从自己的编译命令中引用它,例如:

arm-none-linux-gnueabi-gcc -I{includedir} -L{libdir} ssh.c -o arm -lssh

请注意,libssh 又依赖于其他库 - o​​penssl 和 zlib - 您还必须交叉编译它们。

关于arm - 链接到 libssh 时为 ARM 进行交叉编译 - libssh.so : file not recognized,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21083052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com