Libcurl для архитектуры ARM - PullRequest
0 голосов
/ 08 октября 2019

Я кросс-компиляция в 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

Я также попытался загрузить некоторыеБиблиотеки libcurl, которые я нашел на странице debian и предназначенные для ARMHF, поместили их в какую-то папку и использовали -L (routetofolder), но это тоже не сработало.

Надеюсь, вы, ребята, сможете мне помочь.

Спасибо!

1 Ответ

1 голос
/ 30 октября 2019

Ну, libcurl есть в том, что вы получаете от поставщика (если вы посмотрите на / usr / lib, то найдете его там). Это проблема с вашей ссылкой.

Возможно, вы захотите посмотреть, как разрешаются зависимости динамических библиотек при компоновке, а затем во время выполнения в системах linux. Это также поможет вам понять, что может происходить на платформе vos2, когда вы попытаетесь использовать свои собственные динамические библиотеки, которые могут иметь конфликтующие имена, и компоновщик может разрешить их для чего-то, существующего на том же устройстве, но в месте, к которому у вас могут отсутствовать разрешения. читать, потому что он принадлежит к другому usrXX или sysXX.

Чтение /etc/ld.so.conf с устройства поможет вам понять местоположения и порядок поиска, выполняемый динамическим компоновщиком. Вы можете получить файл с устройства или просто найти его в OS.rfsbundle (смотрите skeletonfs) и правильно настроить параметры компоновки. Я думаю, что обычно поставщик не распространяет его с sysroot, но вы можете добавить его вручную.

...