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

交叉编译动态库

发布时间: 2023-05-07 05:30:06

① 用arm-linux交叉编译器使用动态库时搜索标准路径是什么

/usr/lib , /橘源usr/libxx xx为数字,一般32或64,x32
标准头好伍毕文友芹件搜索路径:/usr/include/

② arm-linux-gcc交叉编译是静态编译还是动态的

动态的,你在后面加-static就是静态的

③ 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

④ 如何交叉编译 动态库

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

⑤ Ubuntu下使用mingw-w64交叉编译ffmpeg

网上大部分编译windows版ffmpeg的教程都是基于msys+mingw的,完全运行在windows上。由于msys2的性能实在是太糟糕了,编译速度太感人,因此决定研究Linux下使用mingw-w64交叉编译

先是安装ubuntu版的mingw-w64
sudo apt install mingw-w64

然后在configure ffmpeg的时候,在正常的配置项之后加上。
--arch=x86 --target-os=mingw32 --cross-prefix=i686-w64-mingw32-

上面是32位库编译的配置,64位的如下
--arch=x86_64 --target-os=mingw32 --cross-prefix=x86_64-w64-mingw32-

而且最好使用动态库,静态库还需要链接一大堆mingw的库实现,而且还可能链接失败。但这样编译出来的动态库,还需要依赖 libgcc_s_sjlj-1.dll。如果要移除这个依赖,configure的时候还要加上 --extra-ldflags='-static-libgcc'

⑥ linux mount windows共享目录 交叉编译安卓动态库传输错误

那就是软件问题了

热点内容
安卓照片存储位置 发布:2025-07-07 21:31:58 浏览:962
kingcmsphp 发布:2025-07-07 21:31:49 浏览:390
微信的锁屏密码是什么 发布:2025-07-07 21:28:52 浏览:755
树莓派自带ftp开启 发布:2025-07-07 21:11:41 浏览:50
智慧树用脚本会怎么样 发布:2025-07-07 21:05:48 浏览:515
随机启动脚本 发布:2025-07-05 16:10:30 浏览:536
微博数据库设计 发布:2025-07-05 15:30:55 浏览:32
linux485 发布:2025-07-05 14:38:28 浏览:310
php用的软件 发布:2025-07-05 14:06:22 浏览:760
没有权限访问计算机 发布:2025-07-05 13:29:11 浏览:437