EDA365电子论坛网
标题:
为什么linux 交叉编译后找不到库文件呢?过来看看吧
[打印本页]
作者:
uperrua
时间:
2019-9-21 09:00
标题:
为什么linux 交叉编译后找不到库文件呢?过来看看吧
网上大众的作法这里不做介绍
2 G; ]4 l; h- l9 P" L( X& i1 {
# D' W! l, X0 H# c4 m4 O
5 e; `7 g$ V% Y
在编译一些库的时候可能某些工具会用到宿主机的,而这些工具在调用的时候会找和宿主机匹配的库,而交叉编译的库是不能用的,
8 \% _, e/ B/ k) l$ C! ]. k* i
6 l4 s0 o- X$ J8 t
6 z1 g! D8 D$ v/ i* K4 ?, i0 @
遇见这种情况基本是解决不了的,但是可以通过configure 的选项去掉这些过程,举个例子:
+ B. W# G% B7 B$ f! t; u
8 D; d7 T3 H$ d2 l$ k* Z5 ^
, S! N% B1 {, Z
我在编译 udev 的时候 用到 g-ir-scanner 这个脚本,之后就提示找不到 libudev,libffi,libz,而这些在我的环境变量里面是包含了的
s* }6 H# r8 L6 g
' F: d- ^& c1 A4 P( ^# _
. u, @3 h8 l8 ^% z2 @: B4 m0 S. i/ B, Q
查看 configure --help 之后 把--disable-introspection 加上,就可以跳过这一步,顺利通过。
9 ]4 \) }+ f# q. {4 m; M; N& f
. T n0 }: x' P9 b* q1 X b$ Z
' \ k* Y$ Z* H
这种问题在configure阶段可以加在 -l 选项中,如果configure过了,说明可以找到这些库,make没有通过,基本就是某个工具环境的问题了。
/ s1 _# {* K& Y/ _, K8 I/ V* f/ m
7 o+ {: I. r: h! n
V: \% e2 p3 R
另外有时候会提示某个文件不能执行,这些可执行文件就很可能是在make阶段生成的(100%),而交叉编译生成的在宿主机上面肯定是不能运行的,
/ I {6 v4 F5 S7 i1 K3 R# t
7 L3 @6 } j- k' W
% Q3 h5 N' g8 X6 S/ |' L
可以用file命令查看文件属性,这个问题可以先在宿主机make一遍,然后把生成的可执行文件直接拷贝到交叉编译的环境下,不要make clean,否则会自动删除。
" P7 `+ h3 [# W
" [. D' ?5 X" N4 ~
2 x' K8 a& h P" i9 i
9 E5 q' s4 e0 m' t3 u
: N% P' W$ e7 }7 v1 v; K
7 x' e" p _* ]) g' j2 D& H! h, E) B# K" V5 r
! L u7 d2 `0 Y
% M- ^$ x5 w5 S+ ~
* y/ v- I+ e; r/ ]& p
作者:
wu68aq
时间:
2019-9-23 18:08
看看。
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2