交叉编译静态库常见问题
更新日期:
交叉编译静态库,会遇到一些比较郁闷的问题,现在总结一下。
编译库
编译静态库的时候,一般不要指定 LDFLAGS 中的 -lxx 去链接某个库(可以设置 -Lxx 链接库的路径)。因为好像指定的话,它老会去链接某些依赖库的 .so(假设之前你这些库都是编成 .a 的)。
编译应用程序
编译应用程序的时候,需要以下几个问题:
这个时候一般需要指定 LDFLAGS 中的 -lxx (这个结合上面说的,可以在编译脚本里定义几个命令:编译库时候 unset xx ,编译应用程序时 export xx)。
注意 -lxx 链接库时的先后顺序。有些时候会出现某些依赖库找不到另外一些依赖库中定义的符号的问题,这个时候就是 -lxx 的顺序不对。动态库是无所谓顺序的,但是静态库一般来说所依赖的库还放到后面去链接。
有些时候就算按照上面的设置了,编应用程序的时候它还是会去链接依赖库的 .so 文件。这个时候可以把依赖库的 .la (所有的,一个不能留)文件移开(但是注意要是重新编译依赖库的时候需要把这些 .la 文件还远回去)。