当前位置: 技术问答>linux和unix
【求助】怎么把GCC库转化为arm-linux-gcc的库啊
来源: 互联网 发布时间:2016-05-19
本文导语: 我要交叉编译点东西,发觉少了个libpq.so的库,但gcc下面的库又有,如果直接把GCC的库拷过来会出现skipping compatible的情况,但我在网上找了好几种编译工具链都没有libpq.so这个库,我想能不能直接把GCC下面的库转...
我要交叉编译点东西,发觉少了个libpq.so的库,但gcc下面的库又有,如果直接把GCC的库拷过来会出现skipping compatible的情况,但我在网上找了好几种编译工具链都没有libpq.so这个库,我想能不能直接把GCC下面的库转换成arm-linux-gcc的库呢?知道的大大帮帮我好吗,或者提供下arm-linux-gcc的libpq.so库也可以,感激不尽!
|
简单方法():
Step1: 下载postgresql-8.3.6.tgz源代码(或者其它版本)
download url: http://www.postgresql.org/ftp/source/
并解压到某个目录下,假设目录为: ~/postgresql-8.3.6
Step2: 在~/postgresql-8.3.6目录下执行./configure 脚本生成Makefile
# ./configure
如果脚本支持你的ARM build/host,那么可以用./configure --host=arm*,将*修改为你具体的环境;
如果不支持,那么就先生成为PC(X86)上的编译环境,然后自己修改生成的Makefile;
NOTES: 正规的交叉编译方法应该是修改相关配置脚本,支持你的编译环境,然后用./configure --host=xxx之类来完成;但是
有时候,如果配置里面不支持相关平台,那么修改起来也不是很容易. 这时候,比较另类的方法就是先生成PC平台的Makefile,
然后直接修改Makefile(不推荐,但多数时候可用).
Step3: 如果你已经通过./configure --host=arm*产生了适合你平台的Makefile,那么进入到~/postgresql-8.3.6/interfaces/libpq/目录直接编译
即可生成你要库文件libpq.so.*;
Step4: 如果你是直接./configure生成的PC机器的Makefile,那么需要修改~/postgresql-8.3.6/Makefile.global,将里面gcc还有其它编译工具
程序修改为你对应的ARM版本; 然后在进入~/postgresql-8.3.6/interfaces/libpq/目录编译即可得到你要的库文件;
比较的罗嗦了,主要是看你这个问题(相关)已经纠缠了不少时候,希望对你有所帮助!
GOOD LUCK!
Step1: 下载postgresql-8.3.6.tgz源代码(或者其它版本)
download url: http://www.postgresql.org/ftp/source/
并解压到某个目录下,假设目录为: ~/postgresql-8.3.6
Step2: 在~/postgresql-8.3.6目录下执行./configure 脚本生成Makefile
# ./configure
如果脚本支持你的ARM build/host,那么可以用./configure --host=arm*,将*修改为你具体的环境;
如果不支持,那么就先生成为PC(X86)上的编译环境,然后自己修改生成的Makefile;
NOTES: 正规的交叉编译方法应该是修改相关配置脚本,支持你的编译环境,然后用./configure --host=xxx之类来完成;但是
有时候,如果配置里面不支持相关平台,那么修改起来也不是很容易. 这时候,比较另类的方法就是先生成PC平台的Makefile,
然后直接修改Makefile(不推荐,但多数时候可用).
Step3: 如果你已经通过./configure --host=arm*产生了适合你平台的Makefile,那么进入到~/postgresql-8.3.6/interfaces/libpq/目录直接编译
即可生成你要库文件libpq.so.*;
Step4: 如果你是直接./configure生成的PC机器的Makefile,那么需要修改~/postgresql-8.3.6/Makefile.global,将里面gcc还有其它编译工具
程序修改为你对应的ARM版本; 然后在进入~/postgresql-8.3.6/interfaces/libpq/目录编译即可得到你要的库文件;
比较的罗嗦了,主要是看你这个问题(相关)已经纠缠了不少时候,希望对你有所帮助!
GOOD LUCK!
|
帮顶吧,你目标板什么平台来的?
|
http://www.postgresql.org/
这个sql好像是开源的吧,你可以把代码用arm编译一下试试看。
这个sql好像是开源的吧,你可以把代码用arm编译一下试试看。
|
将LDFLAGS里面的-all-static去掉试过没有?
|
兄弟你的arm-linux-gcc是哪个版本的?我刚刚在网上搜了一下,貌似别人也有你这个问题,但都没看到solution,
估计是工具链本身的问题,要是版本太旧,可以试试下个最新版本的看看
估计是工具链本身的问题,要是版本太旧,可以试试下个最新版本的看看
|
建议用这个方法,开源的东西,自己找到源代码,交叉编译下就好了! 找现成的反而不太放心!
GOOD LUCK!
|
没法转化,一般都得重新编译吧
|
没见过可以直接转目标文件的,重新编译用起来比较安全。
但没有源代码也是没办法的事
但没有源代码也是没办法的事
|
声明 -Ldirectory libpq 所处的目录了没?
|
出现这个问题,肯定是库路径问题,最好在Makefile中指定libpq.so库所在路径(用 -L/LIBPQ_PATH)!
我看了下,在postgresql-8.3.6版本中的libpq是包含这些函数的,你可以简单的用这个命令# nm libpq.so | grep PQstatus 确认下
libpq.so里面是否有这些函数,如果有,那么多半是库路径的问题!
GOOD LUCK!
我看了下,在postgresql-8.3.6版本中的libpq是包含这些函数的,你可以简单的用这个命令# nm libpq.so | grep PQstatus 确认下
libpq.so里面是否有这些函数,如果有,那么多半是库路径的问题!
GOOD LUCK!
|
建议:
1. 用file看下 /work/tools/gcc-3.4.5-glibc-2.3.6/lib/目录下libpq.so等文件类型,然后贴出结果
# file //work/tools/gcc-3.4.5-glibc-2.3.6/lib/libpq.*
2. 如果、/work/tools/gcc-3.4.5-glibc-2.3.6/lib/下面有libpq.a也有libpq.so,那么暂时将libpq.a移走;
3. 编译的命令修改为下面的试试:
make LDFLAGS="-all-static -L/work/tools/gcc-3.4.5-glibc-2.3.6/lib/ -lpq"
4. 都不行,将Makefile拿出来看看
GOOD LUCK!
1. 用file看下 /work/tools/gcc-3.4.5-glibc-2.3.6/lib/目录下libpq.so等文件类型,然后贴出结果
# file //work/tools/gcc-3.4.5-glibc-2.3.6/lib/libpq.*
2. 如果、/work/tools/gcc-3.4.5-glibc-2.3.6/lib/下面有libpq.a也有libpq.so,那么暂时将libpq.a移走;
3. 编译的命令修改为下面的试试:
make LDFLAGS="-all-static -L/work/tools/gcc-3.4.5-glibc-2.3.6/lib/ -lpq"
4. 都不行,将Makefile拿出来看看
GOOD LUCK!