tim*_*rts 3 postgresql cross-compiling
我在为我的TI Sitara AM335x EVM SK交叉编译PostgreSQL时遇到了麻烦.我的主机系统是运行Ubuntu 12.04的i386机器.
我的应用程序是用Ct编写的.当我尝试编译时,我得到libpq.so不兼容的错误.我相信这是因为交叉编译器正在尝试使用主机libpq.so而不是目标系统(我发现它不存在).
我已经下载了PostgreSQL的源代码,目的是交叉编译,以便为我提供与我的目标系统兼容的libpq.so库,但是几乎没有关于如何执行此操作的信息.
我已尝试将CC参数与configure文件一起使用,将我的编译器更改为以下内容:CC=/home/tim/ti-sdk-am335x-evm-06.00.00.00/linux-devkit/sysroots/i686-arago-linux/usr/bin/arm-linux-gnueabihf-gcc但configure脚本给出了以下错误:configure: error: cannot run C compiled programs. If you meant to cross compile, use --host.
配置文件对--host选项进行了一个小的引用,但是我能找到的文件中唯一的信息是参考mingw和windows,这不是我想要的.
我已经完成了一些快速搜索配置文件,它引用了--host选项,但没有解释什么是有效主机.我假设使用--host选项会有一个关联的--target.
我可以为configure脚本提供哪些参数,以便它与正确的编译器交叉编译以生成我的目标设备可以使用的库?有没有关于--host/ - 目标如何工作或如何使用它们的资源?
好吧,所以在摆弄了一会儿之后,我想我实际上能够交叉编译PostgreSQL并回答我自己的问题.
在我进一步研究之前,我意识到我忘记了将交叉编译器的路径添加到PATH环境变量中.我使用该命令export PATH=/path/to/cross/compiler:$PATH将编译器路径插入到PATH环境变量中.
接下来,我做了一些使用--host选项的实验.首先,我尝试使用./configure --host=arm-linux-gnueabihf并运行configure脚本.configure脚本似乎接受这个作为主机参数.然后我进入下一步运行makefile.运行此makefile会导致生成错误.错误是selected processor does not support Thumb mode.我快速搜索了一下我能找到的关于这个错误的信息并进入了这个网页:http://www.postgresql.org/message-id/E1Ra1sk-0000Pq-EL@wrigleys.postgresql.org.
这个网页给了我更多的信息,因为看起来这个人正试图做一些与我非常相似的事情.该帖子的响应者之一提到--disable-spinlocks适用于PostgreSQL默认不支持的处理器.我模仿了上面列出的网站中使用的参数并使用了命令:./configure --host=arm-linux CC=arm-linux-gnueabihf-gcc AR=arm-linux-gnueabihf-ar CPP=arm-linux-gnueabihf-cpp --without-readline --without-zlib --disable-spinlocks生成我的makefile.这个makefile实际上生成了所有文件,包括我需要的libpq.so库文件.
希望这对未来的其他人有所帮助!
| 归档时间: |
|
| 查看次数: |
1391 次 |
| 最近记录: |