我正在尝试交叉编译最新的pycurl包,但问题也可能适用于早期版本。我的谷歌搜索显示这个包不是非常交叉编译友好。
首先,我使用buildroot和buildroot工具链(uclibc最新版本)进行交叉编译。
该软件包使用gentargets构建,因为它不是为自动目标编写的。 build命令只调用setup.py:
define PYCURL_BUILD_CMDS
(cd $(@D);\
CC="$(TARGET_CC)"\
LD="$(TARGET_LD)"\
$(HOST_DIR)/usr/bin/python setup.py build\
--curl-config=$(STAGING_DIR)/usr/bin/curl-config)
endef
问题是在构建目标文件之后,构建脚本决定使用目标编译器中的主机编译器:
构建目标文件:
/ media / N / svn_main / buildroot / output / host / usr / bin / ccache / media / N / svn_main / buildroot / output / host / usr / bin / x86_64-unknown-linux-uclibc-gcc -DNDEBUG -g -O3 -Wall -Wstrict-prototypes -I / media / N / svn_main / buildroot / output / host / usr / x86_64-unknown-linux-uclibc / sysroot / usr / include -I / media / N / svn_main / buildroot / output / host / usr / x86_64-unknown-linux-uclibc / sysroot / lib -fPIC -DPYCURL_VERSION =" 7.19.5.1" -DHAVE_CURL_OPENSSL = 1 -DHAVE_CURL_SSL = 1 -I / media / N / svn_main / buildroot / output / host / usr / include / python2.7 -c src / stringcompat.c -o build / temp.linux-x86_64-2.7 / src /stringcompat.o
关联图书馆: / media / N / svn_main / buildroot / output / host / usr / bin / ccache / usr / bin / gcc -pthread -shared -L / media / N / svn_main / buildroot / output / host / usr / x86_64-unknown-linux-uclibc / sysroot / -L / media / N / svn_main / buildroot / output / host / usr / x86_64-unknown-linux-uclibc / sysroot / lib --sysroot = / media / N / svn_main / buildroot / output / host / usr / x86_64-unknown-linux-uclibc / sysroot build / temp.linux-x86_64-2.7 / src / docstrings.o build / temp.linux-x86_64-2.7 / src / easy.o build / temp.linux-x86_64-2.7 / src / module.o build / temp.linux-x86_64-2.7 / src / multi.o build / temp.linux-x86_64-2.7 / src / oscompat.o build / temp.linux-x86_64 -2.7 / src / pythoncompat.o build / temp.linux-x86_64-2.7 / src / share.o build / temp.linux-x86_64-2.7 / src / stringcompat.o build / temp.linux-x86_64-2.7 / src / threadsupport.o -L / media / N / svn_main / buildroot / output / host / usr / x86_64-unknown-linux-uclibc / sysroot / usr / lib -lcurl -lcrypto -o build / lib.linux-x86_64-2.7 / pycurl的.so
如果你曾经对这个软件包进行过编译或对我遇到的问题有所了解,我会很感激帮助。
答案 0 :(得分:0)
您应该使用python-package基础结构在Buildroot中打包pycurl。它将使用pycurl源中提供的基于distutils的setup.py。
答案 1 :(得分:0)
我最终通过设置LDSHARED变量来解决:
LDSHARED="$(TARGET_CC) -pthread -shared"
显然distutils使用不同的工具来链接最终的共享对象,该对象由LDSHARED指定。