0

我在 Windows 7 上交叉编译,我使用这个编译器:

gcc-linaro-arm-linux-gnueabihf-4.7-2013.03\bin\arm-linux-gnueabihf-g++.exe

我想将 libcurl 用于一些 HTTP 请求,但是当我使用 -libcurl 链接时,我收到了一条臭名昭著的消息,即链接器找不到该库。我尝试在互联网上搜索此架构(ARMHF)的正确库,但我找不到任何东西。或者也许我确实找到了它,但我做错了?我的链接电话很长,但在这里:

这是一个有效的方法,如果我添加 -libcurl 或任何相关的东西,它会破坏......

C:\vde\toolchains\windows\vos2\gcc-linaro-arm-linux-gnueabihf-4.7-2013.03\bin\arm-linux-gnueabihf-g++.exe -o out\RefApp -Wl,-rpath=C:\vde\SDKs\vos2\vos2-sdk-winx86-release-31010800\vos2\usr\lib -Wl,-r
path=C:\vde\SDKs\vos2\vos2-sdk-winx86-release-31010800\vos2\usr\local\lib -Wl,-rpath=C:\vde\SDKs\vos2\vos2-sdk-winx86-release-31010800\vos2\lib -Wl,-rpath=C:\vde\SDKs\vos2\vos2-sdk-winx86-release-3101
0800\vos2\usr\local\lib\svcmgr C:\desarrollo\corvet\out\corvet.a -LC:\desarrollo\RefApp\lib -LC:\vde\SDKs\vos2\vos2-sdk-winx86-release-31010800\vos2\usr\local\lib -LC:\vde\SDKs\vos2\vos2-sdk-winx86-re
lease-31010800\vos2\lib -LC:\vde\SDKs\vos2\vos2-sdk-winx86-release-31010800\vos2\usr\local\lib\svcmgr  -LC:\vde\ADKs\adk-full-4.6.5-610\vos2\lib -L -LC:\desarrollo\corvet\out -lrt -llog -lvfiguiprt -l
vfiipc -lTLV_Util -lpthread -lvfiplatforminfo -lsvc_utility -lvfibuzzer -lsvc_powermngt -lsvc_led -lvfisysinfo -lvfisysbar -lsqlite -lexpat -linf -lcom -levt -ltecclient -lmsrclient -lEMV_CT_Link -lEM
V_CT_Client -lEMV_CTLS_Link -lEMV_CTLS_Client -lNFC_Framework -lNFC_Client -lsvc_tms -lUtils -lseccmd-static -lsvc_sound -lccp -lcrypto -lsec -lseccmd-static -lsecins -lvfisvc -lvfisyspm -lvfimac -lvf
isec -lAdkCapX

我还尝试下载我在 debian 页面上找到的一些 libcurl 库,这些库应该是用于 ARMHF 的,将它们放在某个文件夹中并使用 -L(routetofolder) 但这也不起作用。

希望你们能帮帮我。

谢谢!

4

1 回答 1

1

好吧,libcurl 就在你从供应商那里得到的东西中(如果你查看 /usr/lib,你会在那里找到它)。你的链接有问题。

您可能想尝试查看在链接时如何解决动态库依赖关系以及稍后在 linux 系统上的运行时。它还将帮助您了解 vos2 平台上可能发生的情况,当您尝试使用可能具有冲突名称的自己的动态库时,链接器可以将它们解析为存在于同一设备上但位于您可能无权访问的位置的内容读取,因为它属于不同的 usrXX 或 sysXX。

从设备读取 /etc/ld.so.conf 将帮助您了解动态链接器完成的位置和搜索顺序。您可以从设备中获取该文件,或者直接在 OS.rfsbundle 中找到它(在skeletonfs 中查看)并正确设置您的链接选项。我认为供应商通常不会与 sysroot 一起分发它,但您可以手动添加它。

于 2019-10-30T00:29:43.900 回答