当前位置:首页 » 编程软件 » 交叉编译库

交叉编译库

发布时间: 2023-04-28 02:16:34

⑴ lxml库的交叉编译

总有很多原因,需要在非x86平台下跑python

python的交叉编译网上有不少帖子,讲的都很好,这里就不在多说,放两个链接
http://ljgabc.github.io/2015/04/24/2015-04-24-%E4%BA%A4%E5%8F%89%E7%BC%96%E8%AF%91Python-3-4-2/
http://xiaoxia.org/2013/09/13/python-on-tomato/

lxml这类第三方库,底层采用了C语言写扩展。如果需要lxml在非侍虚纤X86平台上正确运行,那就需要将C语言扩展(xxx.so)编译成对应平台的二进制文件。
一般来说,直接在对应平台上编译安装老仿即可。But,如果对应平台上内存太小、处理器太慢、空间太少或者说根本没有誉激编译器.....(其实就是说的嵌入式)
好吧,还是安心的交叉编译lxml吧

lxml 依赖于 libxml2 、libxslt
首先把它两给编译了,安装一个指定路径 MYPREFIX
脚本里的 MY[xxx] 请指定对应的交叉编译工具

lxml

libxslt

还是先上脚本

/usr/local/bin/python3 是host python,必须和target python的版本一致 ,要不出了事不负责
${MYPREFIX_PYTHON} 是target python 编译安装的根目录
${DESTDIR} 编译的结果文件生成路径
LDFLAGS CC :一般交叉编译都会指定的编译工具或选项

大约就是这样了
在深入了解下

为什么要指定 LINKCC BLDSHARED LDSHARED ,这是啥?
这三个变量来自于 host python的 /usr/local/lib/python3.6/_sysconfigdata_m_XXXXXXXXX.py
在编译 build_ext 的时候,python的主要工具类是 Extension (from distutils.core import setup, Extension) ,这个类可以配置ext们的include/src/宏定义/等等一系列东西,它使用你配置的 CC BLDSHARED 等变量覆盖_sysconfigdata.py里的内容,然后进行编译

LINKCC BLDSHARED LDSHARED 这三个变量会指定链接,动态库链接时使用的编译器默认全都是 gcc ................................ :<
所以在编译lxml时只指定CC是没用的,因为 LDSHARED 还会被使用

推广一下, 以后第三方库交叉编译时可能还需要手动指定 _sysconfigdata.py 中的其他变量

GGGL

⑵ 如何交叉编译开源库

所谓的搭建交叉编译环境,即安装、配置交叉编译工具链。在该环境下编译出嵌入式linux系统所需的操作系统、应用程序等,然后再上传到目标机上。
交叉编译工具链是为了编译、链接、处理和调试跨平台体系结构的程序代码。对于交叉开发的工具链来说,在文件名称上加了一个前缀,用来区别本地的工具链。例如,arm-linux-表示是对arm的交叉编译工具链;arm-linux-gcc表示是使用gcc的编译器。除了体系结构相关的编译选项以外,其使用方法与Linux主机上的gcc相同,所以Linux编程技术对于嵌入式同样适用。不过,并不是任何一个版本拿来都能用,各种软件包往往存在版本匹配问题。例如,编译内核时需要使用arm-linux-gcc-4.3.3版本的交叉编译工具链,而使用arm-linux-gcc-3.4.1的交叉编译工具链,则会导致编译失败。
那么gcc和arm-linux-gcc的区别是什么呢?区别就是gcc是linux下的C语言编译器,编译出来的程序在本地执行,而arm-linux-gcc用来在linux下跨平台的C语言编译器,编译出来的程序在目标机(如ARM平台)上执行,嵌入式开发应使用嵌入式交叉编译工具链。

工具/原料
电脑系统:win7系统。虚拟机系统:workstation6.5 。虚拟机安装的linux版本:fedora9.0。内核:linux2.6.25 。
方法/步骤
1
我使用的交叉编译工具链是arm-linux-gcc-4.4.3,把它放在linux系统的路径是图一

2
在linux系统的路径/home/song/share下放了交叉编译工具链arm-linux-gcc-4.4.3的压缩包,另一个版本的不用。有的人可能会问到怎么把这个压缩包弄到虚拟机的linux的系统的,我是通过samba服务从主机复制到虚拟机的,这里的share文件夹就是我samba服务器的工作目录,多了不说,这不是重点。
然后通过命令mkdir embedded 建立一个arm-linux-gcc的安装目录,如图二所示。当然安装路径和目录名称“embedded”可以依自己的喜好而定。
步骤阅读
然后通过命令将share文件夹下的arm-linux-gcc-4.4.3.tar.gz复制到这里的embedded文件夹下, 当然这里你也可以不进行这一步我这是为了方便以后管理,将arm-linux-gcc安装到embedded文件夹下,方便以后寻找。

然后使用tar命令:tar zxvf arm-gcc-4.4.3.tar.gz将embedded文件夹下的arm-linux-gcc-4.4.3.tar.gz解压缩安装到当前目录下

执行完解压缩命令,就已经将交叉编译工具链arm-linux-gcc-4.4.3安装到linux系统上了,这里默认安装到了图六所示的路径上。

接下来配置系统环境变量,把交叉编译工具链的路径添加到环境变量PATH中去,这样就可以在任何目录下使用这些工具。 vi /etc/profile 编辑profile文件,添加环境变量。

在profile中的位置处,添加图八所示的红线标注的一行,路径就是图六中的红线标注的路径后面加上/4.4.3/bin。

图八中的路径一定是你自己的安装路径,可以使用pwd命令查找一下那个bin目录的路径。添加完路径后,保存退出。接下来使用命令:source /etc/profile,是修改后的profile文件生效,如图九所示。

然后,使用命令:arm-linux-gcc -v查看当前交叉编译链工具的版本信息,如图九中的红线标注第③行所示。很明显 可以看到,如果不执行第②步,则查看版本信息不成功。
然后验证交叉编译工具链是否安装成功并且可以使用,如图九所示,随便找一个目录编辑一个hello源代码。

编辑好hello.c文件后,保存退出。然后使用交叉编译器对hello.c进行编译,并生成可执行文件hello

这里生成的hello文件并不能像gcc编译出来的文件那样直接使用“./hello”命令执行并显示内容 因为它是一个二进制文件,只能下载到开发板上执行!

至此,搭建交叉编译环境步骤结束。

⑶ 交叉编译后的python 怎么使用第三方库

刚遇到一样的问题,解决之后顺手回答下你。
setup.py无法安装是因为卡在build这一步,嵌入式linux系统里为减少体积去除了kernel 头文件之类的,所以理论上补全后可以直接在系统里setup.py安装,但是这种方法并不适合嵌入式linux系统。
我的解决方法是在编译根文件系统的时候顺便把需要的第三方库集成进去。buildroot 2015.05版已经有python-package框架可用,更早版本的话可以自己按照安装步骤写.mk来集成。也 可以在buildroot里交叉编译好这个第三方库,然后拷到文件系统里。

⑷ QT交叉编译时怎么添加静态库,急!!!

INCPATH = -I../EmbedSky/qt-4.5/__install/arm/mkspecs/default -I. -I../EmbedSky/qt-4.5/__install/arm/include/QtCore -I../EmbedSky/qt-4.5/__install/arm/include/QtNetwork -I../EmbedSky/qt-4.5/__install/arm/include/QtGui -I../EmbedSky/qt-4.5/__install/arm/include -I. -I. -I.
在这里增加你编译的静态库。。。可以试试,我也是新手

⑸ 如何交叉编译 动态库

首先,你要保证你编译的程序使用的交叉编译链是开发板支持的,例如arm-linux-4.3.2,一般是在虚拟机下面的linux系统下的/etc/profile里面添加编译链路径;接着,需要确保使用的内核是开发板目前使用的内核,一般MINI2440是使用linux-2.6.30版本的,这个要在程序的makefile文件里面改;还有,如果你使用静态编译方式文件会比较大,但是不用依赖库,如果是用动态编译,文件就比较小,但是依赖动态库,如果放到开发板上运行提示缺少动态库,就证明你没有把动态库放进开发板的/lib里面,可以用ldd指令查看需要哪些库;最后,记住移植的方式可以使用NFS或者TFTP,U盘也可以,放到开发板上后必须在文件存放的当前目录下./可执行文件,或者把文件放入/bin或者/sbin下面,就可以直接可执行文件,不用加./你可以在程序里面加些调试信息输出,例如printf,以此证明有执行。

⑹ 如何交叉编译开源库

{
查看目录下面的README,INSTALL这些文档,看怎么去build。
./buildconf
./configure --host=x86_64-pokysdk-linux --target=arm-poky-linux-gnueabi --prefix=/root/work/lib_arm/c-ares

make有时候可以手动指定CC,AR,LD等编译选项,但是要根据组件的Makefile和config文件是否用到,名字是不是这个,不能随意猜测
make CC="arm-poky-linux-gnueabi-gcc" AR="arm-poky-linux-gnueabi-ar r" RANLIB="arm-poky-linux-gnueabi-ranlib"
make CC="arm-poky-linux-gnueabi-gcc" AR="arm-poky-linux-gnueabi-ar r" RANLIB="arm-poky-linux-gnueabi-ranlib" install

有可能需要配置下某些编译选项以使得编译器配置和组件代码的要求相匹配
export CFLAGS="-mfloat-abi=hard -g0 -O2 -Wno-system-headers "

⑺ 交叉编译libnpg库 ./configure CC=mipsisa32-elf-gcc --host=mipsisa32-linux 求大神给予帮助

编译安装。关键要看configure后,屏幕上出现的那一堆内容的最末尾有没有error:
没有就可以进行下一步。至于其他的,例如warning,可以忽略。
make和make install也是一样

⑻ OpenCV交叉编译时用到的几个依赖库

OpenCV交叉编译时用到的几个依赖库。在BB Black 入门基础之OpenCV的交叉编译 一文中用到。大家有需要的可以拿去用。
↑收起

文件列表
.deps
----|ControlResource.Po
----|DCU99Editor.Po
----|DuplexEditor.Po
.eclipseme.tmp
----|emulation
----|----|PhoneBook.jad
----|----|PhoneBook.jar
verified
----|classes
----|----|com
----|----|----|north
----|----|----|----|phonebook
----|----|----|----|----|model
----|----|----|----|----|----|Account.class
----|----|----|----|----|----|ApplicationException.class
----|----|----|----|----|----|Index.class
----|----|----|----|----|----|Model$AccountFilter.class
----|----|----|----|----|----|Model$IndexFilter.class
----|----|----|----|----|----|Model.class
----|----|----|----|----|----|Preference.class
----|----|----|----|----|----|UserModel.class
ui
----|ConfirmationDialog.class
----|DetailInfoUI.class
----|Dialog.class
----|DialogListener.class
----|IndexFunctionUI$ListIndex.class
----|IndexFunctionUI.class
----|ListMerchantGroupUI.class
----|ListPhoneUI.class
----|LoginUI.class
----|MerchantGroupDetailInfoUI.class
----|NewPhoneUI.class
----|SearchPhoneUI.class
----|Title.class
----|UIController$1.class
----|UIController$EventID.class
----|UIController.class
----|WaitCanvas$1.class
----|WaitCanvas.class
----|WelcomeUI.class
PhoneBookMIDlet.class
.myeclipse
----|CVS
----|----|Repository
----|----|Root
.settings
----|CVS
----|----|Entries
----|----|Repository
----|----|Root
org.eclipse.core.resources.prefs
.svn
----|prop-base
props
text-base
----|readme.txt.svn-base
tmp
----|prop-base
props
text-base
all-wcprops
dir-prop-base
entries
format
.tmp_versions
----|dw4002.mod
dependence
----|ffmpeg-0.10.3.tar.bz2
----|jpegsrc.v8d.tar.gz
----|libpng-1.5.14.tar.gz
----|libv4l-0.6.1.gz
----|tiff-4.0.3.tar.gz
----|x264-snapshot-20120528-2245-stable.tar.bz2
----|xvidcore-1.3.2.tar.gz
----|zlib127.zip
..dir.dat
._CotEditor_346
._PortVaR
.classpath
.cproject
.cxl
.depend
.dw4002.ko.cmd
.dw4002.mod.o.cmd
.dw4002.o.cmd
.exe
.gitignore
.htaccess
.message
.pdf
.project
.qmake.internal.cache
.screenrc
.synopsys_dc.setup
.synopsys_pt.setup
.untf
.vimrc
.xhdl3.xref

⑼ 如何交叉编译开源库

你有没有先注意到
1、你在./configure 的时候有没有给它添加上这个库看因为很可能你知道有这个库,但是./configure它自己不知道,你要在这个命令后面试着告诉./configure 你的库的位置,可以考虑用-L/YOU_LIB_DIR or -ILIB_NAME。

2、也有可能是你这个库没有PPC版本的,如果是这样的话,你要找到这个库的源代码,然后把它交叉编译,再导入这个zebra。

good luck!

热点内容
c语言fread返回值 发布:2025-07-12 16:57:32 浏览:678
王者荣耀在哪里显示账号密码 发布:2025-07-12 16:36:42 浏览:898
打包sql数据库 发布:2025-07-12 16:19:27 浏览:796
php日志查看 发布:2025-07-12 16:12:10 浏览:214
ftp目录映射为本地盘符 发布:2025-07-12 16:06:59 浏览:645
nas存储百科 发布:2025-07-12 16:03:17 浏览:126
python的sort函数 发布:2025-07-12 15:53:21 浏览:50
ensp服务器怎么设置web根目录 发布:2025-07-12 15:47:56 浏览:286
安卓怎么设置二卡发信息 发布:2025-07-12 15:43:50 浏览:743
如何看到无线密码 发布:2025-07-12 15:43:13 浏览:677