Linux下用openssl 交叉编译译器编译报错缺少Libcso6【求教】

Linux嵌入式交叉编译环境 的搭建 - CSDN博客
Linux嵌入式交叉编译环境 的搭建
1. 安装标准的C开发环境,由于Linux安装默认是不安装的,所以需要先安装一下(如果已经安装好的话,就可以免去这一步了):
  #sudo apt-get install gcc g++ libgcc1 libg++ make gdb
2. 下载arm-linux-gcc-3.4.1.tar.bz2到任意的目录下,我把它下载到了我的个人文件夹里 /home/wrq
  arm-linux-gcc-3.4.1.tar.bz2 的下载地址如下:
3. 解压 arm-linux-gcc-3.4.1.tar.bz2
&  #tar -jxvf arm-linux-gcc-3.4.1.tar.bz2
  解压过程需要一段时间,解压后的文件形成了 usr/local/ 文件夹,进入该文件夹,将arm文件夹拷贝到/usr/local/下
  # cd usr/local/&
  #cp -rv arm /usr/local/
  现在交叉编译程序集都在/usr/local/arm/3.4.1/bin下面了
4.  修改环境变量,把交叉编译器的路径加入到PATH。(有三种方法,强烈推荐使用方法一)
&&&  方法一:修改/etc/bash.bashrc文件
&&&&&&&&&&&&&&&&&#vim /etc/bash.bashrc
&&&&&&&&&&&&&&&&&在最后加上:
&&&&&&&&&&&&&&&&export PATH=$PATH:/usr/local/arm/3.4.1/bin
&&&&&&&&&&&&&&&&export PATH
&&   方法二:修改/etc/profile文件:
&&&&&&&&&&&&&&&&# vim /etc/profile
&&&&&&&&&&&&&&&增加路径设置,在末尾添加如下,保存/etc/profile文件:
&&&&&&&&&&&&&&&export PATH=$PATH:/usr/local/arm/3.4.1/bin
&&  方法三:#export PATH=$PATH:/usr/local/arm/3.4.1/bin
 &&&&&&&&&&&&&&&&&注:(这只能在当前的终端下才是有效的!)
5. 立即使新的环境变量生效,不用重启电脑:
&&&& 对应方法一:#source /root/.bashrc
&&& 对应方法二:# source /etc/profile
6. 检查是否将路径加入到PATH:
&&&   # echo $PATH
  显示的内容中有/usr/local/arm/bin,说明已经将交叉编译器的路径加入PATH。至此,交叉编译环境安装完成。
7. 测试是否安装成功
&&&# arm-linux-gcc -v
&&上面的命令会显示arm-linux-gcc信息和版本
8.编译Hello World程序,测试交叉工具链
&&写下下面的Hello World程序,保存为hello.c
&&&&#include &stdio.h&
&&&&int main()
&&&&printf(&Hello World!\n&);
&&&&&&&return 0;
&&&&执行下面的命令:
&&&&# arm-linux-gcc -o hello hello.c
&&&&源程序有错误的话会有提示,没有任何提示的话,就是通过了,就可以下载到ARM目标板上运行了!&接着可以输入file hello的命令,查看生成的hello文件的类型,要注意的是  生成的可执行文件只能在ARM体系下运行,不能在其于X86的PC机上运行。
本文已收录于以下专栏:
相关文章推荐
平常我们做的编译叫本地编译,也就是在当前平台编译编译得到的程序也是爱本地执行。相对而言的交叉编译指的是在一个平台上生成另一个平台的可执行代码。
常见的交叉编译有以下三种
在windows pc 上...
日期: 
      起因刚好最近三天假期可以玩玩Linux。就是将一个fedora下文件发送到Arm9的下的系统下进行运行。也许会问为何不直接用Arm9上的系统来编译呢,实际上板...
(一)交叉编译器简介   在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,这个编译过程就叫交叉编译.简单地说,就是在一个平台上生成另一个平台上的可执行代码.(二)体系结构与操作系...
第一次接触ARM开发板,整整用了一天才把板子原来的wince系统烧写为Linux,其中就卡在制作SD卡启动的时候,使用的是8G的卡,结果官方提供的制作软件不支持~~~~
    使用的开发板子:TQ2...
前段时间由于搞平台的移植,搞了很头疼的一段时间,终于搞明白移植与如何编译开源代码,因此今天有空写下文档,共同学习学习。行了,废话不多说直接开始。
1、首先linux下编译链的搭建
      在网...
openwrt官方wiki
http://wiki.openwrt.org/doc/howto/start
Ubuntu环境:
Linux wilson-virtual-machine 4.10.0-...
为嵌入式系统写驱动时,不可能在嵌入式设备上对驱动模块进行编译,通常是在交叉编译环境下编译好,然后再下载到嵌入式系统中。这里以最简单的hello模块为例,介绍交叉编译的过程。
hellomod.c的内...
转自:http://blog.csdn.net/quannii/article/details/8515674
1、安装arm-linux-gcc交叉工具链
[root@localho...
他的最新文章
讲师:吴岸城
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字) 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
一步一步搭建MIPS-LINUX-GCC-4 4 0交叉编译工具
下载积分:500
内容提示:一步一步搭建MIPS-LINUX-GCC-4 4 0交叉编译工具
文档格式:PDF|
浏览次数:345|
上传日期: 12:54:00|
文档星级:
全文阅读已结束,如果下载本文需要使用
 500 积分
下载此文档
该用户还上传了这些文档
一步一步搭建MIPS-LINUX-GCC-4 4 0交叉编译工具
关注微信公众号下次自动登录
现在的位置:
& 综合 & 正文
交叉编译qemu
交叉编译qemu
前言:libX11的交叉编译确实非常繁琐,而对于系统调用accept4和preadv&pwritev则需要glibc-2.10以上才会支持,之前的glibc是2.9很悲催。。。。明天去龙芯机子上调试,但愿比较顺利。
作者:口口口
准备工作... 1
过程步骤... 2
重新搭建交叉编译工具... 2
建立zlib库... 4
建立libpng库... 5
安装xproto包... 6
建立libXau库... 6
安装xcb-proto. 6
建立libgpg-error库... 7
建立libgcrypt库... 7
建立libxml库... 8
建立libxslt库... 8
建立libxcb库... 9
安装Xtrans. 10
安装kbproto. 10
安装inputproto. 11
建立libXdmcp库... 11
建立libX11库... 11
安装xextproto. 13
建立libXext库... 13
安装videoproto. 13
建立libXv库... 14
建立SDL库... 14
交叉编译qemu. 15
主机平台:
i686-linux
内核文件:
二进制工具:
binutils-2.19.1.tgz
gcc及其相关:
gcc-4.4.0-3a.tgz
gmp-4.3.0.tar.gz
mpfr-2.4.2.tar.gz
glibc库及其相关:
glibc-2.13.tar.gz
glibc-ports-2.13.tar.gz
zlib-1.2.5.tar.gz
libpng库:
libpng-1.5.6.tar.gz
libX11库及其相关:
libX11-1.3.2.tar.bz2
libgcrypt-1.4.6.tar.gz
libgpg-error-1.10.tar.gz
libxau_1.0.6.orig.tar.gz
libxcb-1.4.tar.bz2
libxdmcp_1.1.0.orig.tar.gz
libxext_1.1.2.orig.tar.gz
libxml2-2.7.4.tar.gz
libxslt_1.1.26.orig.tar.gz
libxv_1.0.5.orig.tar.gz
x11proto-input_2.0.2.orig.tar.gz
x11proto-kb_1.0.5.orig.tar.gz
x11proto-video_2.3.0.orig.tar.gz
x11proto-xext_7.1.1.orig.tar.gz
xcb-proto-1.6.tar.gz
xproto-7.0.20.tar.gz
xtrans_1.2.6.orig.tar.gz
SDL-1.2.14.tar.gz
qemu源文件:
qemu-0.14.1
目录结构:
/crosstool 交叉编译工具根目录
/crosstool/source 存放源文件
/crosstool/mips64el-tools 存放编译出来的工具
/crosstool/binutils /crosstool/gcc /crosstool/glibc 相关工具的编译目录,每个目录下都有build-mips64el-linux目录
/crosstool/kernel 存放内核文件,里面的/headers为存放头文件目录
/crosstool/zlib 交叉编译zlib的工作目录
/crosstool/libpng 交叉编译libpng的工作目录
/crosstool/x11 交叉编译libX11及其相关库和包的工作目录
/crosstool/sdl 交叉编译SDL及其相关库和包的工作目录
/crosstool/qemu 交叉编译qemu的工作目录
/crosstool/qemu/ccp-qemu 存放交叉编译出来的qemu
1& 下载源文件和建立工作目录
2& 重新搭建交叉编译工具
3& 建立zlib库
4& 建立libpng库
5& 建立libX11库及其相关
6& 建立SDL库
7& 交叉编译qemu
重新搭建交叉编译工具
由于glibc从2.10版本才开始支持系统调用accept4和preadv & pwritev,而之前所做交叉编译器的glibc版本很悲催的是2.9,所以在交叉编译qemu时会出现:
osdep.o: In function `qemu_accept':
/crosstool/qemu/qemu-0.14.1/osdep.c:158: undefined reference to `accept4'
/crosstool/qemu/qemu-0.14.1/posix-aio-compat.c:156: undefined reference to `preadv'
collect2: ld returned 1 exit status
这样的错误,所以必须更换glibc。
进入超级权限,删除/crosstool目录下mips64el-tools目录。
cd /crosstool
rm -r mips64el-tools
内核头文件,二进制工具和gcc辅助编译器
比较简单,过程参考《mips64el交叉开发工具链搭建》,注意修改t-linux64。
重新编译glibc库
老规矩,工作前先导入环境变量:
export PATH=$PATH:/crosstool/mips64el-tools/bin
工作目录依然为/crosstool/glibc
解压glibc-2.13和glibc-ports-2.13。
tar zxvf ../source/glibc-2.13.tar.gz
tar zxvf ../source/glibc-ports-2.13.tar.gz
将glibc-ports-2.13重命名为ports并移到glibc-2.9-中去。
mv glibc-ports-2.13/ ports
mv ports/ glibc-2.13/
进入glibc-2.13目录
sed -i "/default) machine=/s/n32/64/g" ports/sysdeps/mips/preconfigure
创建libgcc_eh.a链接,避免后续因无该文件而出现编译错误
cd /crosstool/mips64el-tools/lib/gcc/mips64el-linux/4.4.0/
ln -s libgcc.a libgcc_eh.a
进入/crosstool/glibc/build-mips64el-linux目录。
echo "libc_cv_forced_unwind=yes" & config.cache
echo "libc_cv_c_cleanup=yes" && config.cache
echo "libc_cv_gnu89_inline=yes" && config.cache
echo "libc_cv_mips_tls=yes" && config.cache
配置并编译。
BUILD_CC="gcc" CC="mips64el-linux-gcc -mabi=64" AR=mips64el-linux-ar LD=mips64el-linux-ld RANLIB=mips64el-linux-ranlib ../glibc-2.13/configure --prefix=/crosstool/mips64el-tools/mips64el-linux --host=mips64el-linux --build=i686-linux --disable-profile --enable-add-ons
--with-tls --enable-kernel=2.6.36 --with-_thread --enable-shared --with-binutils=/crosstool/mips64el-tools/bin --with-headers=/crosstool/kernel/headers/include/ --cache-file=config.cache
sed: couldn't open file ../glibc-2.13/ports/sysdeps/unix/sysv/linux/mips/mips64/ldd-rewrite.sed: No such file or directory
修改glibc-2.13/elf/中的Makefile文件。将其中一行:
LC_ALL=C sed $($(ldd-shell)-ldd-rewrite) & $& | LC_ALL=C sed -f $(ldd-rewrite-script) & $@.new
LC_ALL=C sed $($(ldd-shell)-ldd-rewrite) & $& | LC_ALL=C sed -f ../$(ldd-rewrite-script) & $@.new
继续make,成功,进行安装。
make install install_root="/crosstool/mips64el-tools/mips64el-linux" prefix=""
glibc库编译成功。
进入/crosstool/mips64el-tools/mips64el-linux/lib,修改libc.so:
将GROUP ( /lib/libc.so.6 /usr/lib/libc_nonshared.a AS_NEEDED ( /lib/ld.so.1 ) )
改为GROUP ( libc.so.6 libc_nonshared.a AS_NEEDED ( ld.so.1 ) )
修改libpthread.so:
将GROUP ( /lib/libpthread.so.0 /lib/libpthread_nonshared.a )
改为GROUP ( libpthread.so.0 libpthread_nonshared.a )
重新编译完整的gcc
清空build-mips64el-linux文件夹,还原t-linux64,将之前加上的两行删除。具体过程参考《mips64el交叉开发工具链搭建》。
建立zlib库
由于编译qemu需要zlib库,所以在编译qemu前需要交叉编译zlib。
进入目录/crosstool/zlib,解压源码包
tar zxvf ../source/zlib-1.2.5.tar.gz
由于 zlib 库的configure 脚本不支持交叉编译选项,所以需要我们自己手动搞一下,临时把gcc修改成指向交叉编译的mips64el-linux-gcc
cd /usr/bin
mv gcc gcc_back
mv ld ld_back
ln -s /crosstool/mips64el-tools/bin/mips64el-linux-gcc ./gcc
ln -s /crosstool/mips64el-tools/bin/mips64el-linux-ld ./ld
然后检查一下是否已经换过来了
进入工作目录/crosstool/zlib/zlib-1.2.5,进行配置和编译:
./configure --prefix=/crosstool/mips64el-tools/mips64el-linux/ --shared
make install
此时在/crosstool/mips64el-tools/mips64el-linux/的include和lib目录下多了zlib库相关文件。然后将刚才修改的gcc改回去。
cd /usr/bin
mv gcc_back gcc
mv ld_back ld
建立libpng库
在编译qemu的时候报错:
/usr/local/work/qemu-0.14.1/ui/vnc-enc-tight.c:79: error: 'PNG_NO_FILTERS' undeclared here (not in a function)
make: *** [ui/vnc-enc-tight.o] Error 1
即缺少libpng库。
进入目录/crosstool/libpng,解压源码包
tar zxvf ../source/libpng-1.5.6.tar.gz
进入工作目录/crosstool/libpng/libpng-1.5.6,进行配置和编译
cd libpng-1.5.6/
BUILD_CC="gcc" CC="mips64el-linux-gcc -mabi=64" AR=mips64el-linux-ar LD=mips64el-linux-ld RANLIB=mips64el-linux-ranlib ./configure --target=mips64el-linux --host=mips64el-linux --prefix=/crosstool/mips64el-tools/mips64el-linux
make install
此时在/crosstool/mips64el-tools/mips64el-linux/的lib目录下多了libpng.a,libpng.so 等文件,在include下多了 png.h,pngconf.h 文件以及 libpng15文件夹等。
安装xproto包
交叉编译libX*所需依赖。
进入目录/crosstool/x11,解压源码包
tar zxvf ../source/xproto-7.0.20.tar.gz
进入工作目录/crosstool/x11/xproto-7.0.20进行配置编译和安装
cd xproto-7.0.20
BUILD_CC="gcc" CC="mips64el-linux-gcc -mabi=64" AR=mips64el-linux-ar LD=mips64el-linux-ld RANLIB=mips64el-linux-ranlib ./configure --target=mips64el-linux --host=mips64el-linux --prefix=/crosstool/mips64el-tools/mips64el-linux
make intstall
此时在/crosstool/mips64el-tools/mips64el-linux/ include下多了X11目录,内含xproto相关头文件。
建立libXau库
此库为libX11依赖库。
进入目录/crosstool/x11,解压源码包
tar zxvf ../source/libxau_1.0.6.orig.tar.gz
进入工作目录/crosstool/x11/libXau-1.0.6,进行配置、编译和安装
cd libXau-1.0.6/
BUILD_CC="gcc" CC="mips64el-linux-gcc -mabi=64" AR=mips64el-linux-ar LD=mips64el-linux-ld RANLIB=mips64el-linux-ranlib ./configure --target=mips64el-linux --host=mips64el-linux --prefix=/crosstool/mips64el-tools/mips64el-linux
make install
此时在/crosstool/mips64el-tools/mips64el-linux/的lib目录下多了libXau.a,libXau.so 等文件,在include下也多了相关头文件。
安装xcb-proto
交叉编译libxcb所需要的部分文件在这里。
进入目录/crosstool/x11,解压源码包
tar zxvf ../source/xcb-proto-1.6.tar.gz
进入工作目录/crosstool/x11/xcb-proto-1.6/进行配置编译和安装
cd xcb-proto-1.6/
BUILD_CC="gcc" CC="mips64el-linux-gcc -mabi=64" AR=mips64el-linux-ar LD=mips64el-linux-ld RANLIB=mips64el-linux-ranlib ./configure --target=mips64el-linux --host=mips64el-linux --prefix=/crosstool/mips64el-tools/mips64el-linux
make intstall
此时在/crosstool/mips64el-tools/mips64el-linux/lib下多了python2.7目录,内含xcb-proto相关文件,同时pkgconfig也多了xcb-proto相关文件等。
建立libgpg-error库
此库为libgcrypt依赖库。
进入目录/crosstool/x11,解压源码包
tar zxvf ../source/libgpg-error-1.10.tar.gz
进入工作目录/crosstool/x11/libgpg-error-1.10/,进行配置、编译和安装
cd libgpg-error-1.10/
BUILD_CC="gcc" CC="mips64el-linux-gcc -mabi=64" AR=mips64el-linux-ar LD=mips64el-linux-ld RANLIB=mips64el-linux-ranlib ./configure --target=mips64el-linux --host=mips64el-linux --prefix=/crosstool/mips64el-tools/mips64el-linux
make install
此时在/crosstool/mips64el-tools/mips64el-linux/的lib目录下多了libgpg-error库相关文件,在bin下也多了gpg-error-config文件。
建立libgcrypt库
此库为libxslt依赖库。
进入目录/crosstool/x11,解压源码包
tar zxvf ../source/libgcrypt-1.4.6.tar.gz
进入工作目录/crosstool/x11/libgcrypt-1.4.6,进行配置
cd libgcrypt-1.4.6/
BUILD_CC="gcc" CC="mips64el-linux-gcc -mabi=64" AR=mips64el-linux-ar LD=mips64el-linux-ld RANLIB=mips64el-linux-ranlib ./configure --target=mips64el-linux --host=mips64el-linux --prefix=/crosstool/mips64el-tools/mips64el-linux
报错,找不到libgpg-error,但此时已经安装。于是在configure中加上如下命令
--with-gpg-error-prefix=/crosstool/mips64el-tools/mips64el-linux/
重新配置并编译和安装
make install
此时在/crosstool/mips64el-tools/mips64el-linux/的lib目录下多了libgcypt库相关文件,在bin下也多了libgcypt-config文件。
建立libxml库
此库为libxslt依赖库。
进入目录/crosstool/x11,解压源码包
tar zxvf ../source/libxml2-2.7.4.tar.gz
进入工作目录/crosstool/x11/libxml2-2.7.4/,进行配置、编译和安装
cd libxml2-2.7.4/
BUILD_CC="gcc" CC="mips64el-linux-gcc -mabi=64" AR=mips64el-linux-ar LD=mips64el-linux-ld RANLIB=mips64el-linux-ranlib ./configure --target=mips64el-linux --host=mips64el-linux --prefix=/crosstool/mips64el-tools/mips64el-linux
make install
此时在/crosstool/mips64el-tools/mips64el-linux/目录下多了libxml2库相关文件。
建立libxslt库
此库为libxcb所依赖(后来发现,交叉编译中并非如此)
进入目录/crosstool/x11,解压源码包
tar zxvf ../source/libxslt_1.1.26.orig.tar.gz
进入工作目录/crosstool/x11/libxslt-1.1.26,进行配置
cd libxslt-1.1.26/
BUILD_CC="gcc" CC="mips64el-linux-gcc -mabi=64" AR=mips64el-linux-ar LD=mips64el-linux-ld RANLIB=mips64el-linux-ranlib ./configure --target=mips64el-linux --host=mips64el-linux --prefix=/crosstool/mips64el-tools/mips64el-linux
checking for libxml libraries &= 2.6.27... configure: error: Could not find libxml2 anywhere, check ftp://xmlsoft.org/.
于是./configure --help,找到指定xml相关文件的命令,于是加上--with-libxml-prefix=/crosstool/mips64el-tools/mips64el-linux/
重新配置,通过,然后进行编译和安装
make install
这样就在/crosstool/mips64el-tools/mips64el-linux/目录下多了libxslt库相关文件。
建立libxcb库
此库为libX11依赖库。
进入目录/crosstool/x11,解压源码包
tar xvf ../source/libxcb-1.4.tar.bz2
进入工作目录/crosstool/x11/libxcb-1.4,进行配置
cd libxcb-1.4/
BUILD_CC="gcc" CC="mips64el-linux-gcc -mabi=64" AR=mips64el-linux-ar LD=mips64el-linux-ld RANLIB=mips64el-linux-ranlib ./configure --target=mips64el-linux --host=mips64el-linux --prefix=/crosstool/mips64el-tools/mips64el-linux
configure: error: XCB requires xsltproc.
由于经过交叉编译libxslt库生成的xsltproc为目标机可执行文件,本地主机无法使用,所以通过命令
apt-get install xsltproc
本地安装一个xsltproc在/usr/bin中,根据提示信息,configure时,会自动到该目录去寻找,故无需移动。
重新配置,又报错
checking for XCBPROTO... configure: error: Package requirements (xcb-proto &= 1.5) were not met:
No package 'xcb-proto' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix.
Alternatively, you may set the environment variables XCBPROTO_CFLAGS and XCBPROTO_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
此时已手动安装了'xcb-proto',在/crosstool/mips64el-tools/mips64el-linux下,于是通过命令
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/crosstool/mips64el-tools/mips64el-linux/lib/pkgconfig
来设置PKG_CONFIG_PATH,用以查找库的存放和链接信息。
重新配置,通过,然后编译并安装
make install
此时在/crosstool/mips64el-tools/mips64el-linux/目录下多了libxcb库相关文件。
安装Xtrans
Xtrans是xfree86对传输层的封装,具体得说就是:封装tcp socket api之类的函数调用,还有其它许多传输层协议。
交叉编译libX11所需要的部分文件在这里,缺少会报错
imTrans.c:41:31: error: X11/Xtrans/Xtrans.h: No such file or directory
进入目录/crosstool/x11,解压源码包
tar zxvf ../source/xtrans_1.2.6.orig.tar.gz
进入工作目录/crosstool/x11/xtrans-1.2.6/,进行配置、编译和安装
cd xtrans-1.2.6/
BUILD_CC="gcc" CC="mips64el-linux-gcc -mabi=64" AR=mips64el-linux-ar LD=mips64el-linux-ld RANLIB=mips64el-linux-ranlib ./configure --target=mips64el-linux --host=mips64el-linux --prefix=/crosstool/mips64el-tools/mips64el-linux
make install
此时在/crosstool/mips64el-tools/mips64el-linux/目录下多了Xtrans相关文件,如在/crosstool/mips64el-tools/mips64el-linux/include/X11目录下多了Xtrans目录。
安装kbproto
建立libX11库所依赖。
进入目录/crosstool/x11,解压源码包
tar zxvf ../source/x11proto-kb_1.0.5.orig.tar.gz
进入工作目录,进行配置、编译和安装
cd kbproto-1.0.5/
BUILD_CC="gcc" CC="mips64el-linux-gcc -mabi=64" AR=mips64el-linux-ar LD=mips64el-linux-ld RANLIB=mips64el-linux-ranlib ./configure --target=mips64el-linux --host=mips64el-linux --prefix=/crosstool/mips64el-tools/mips64el-linux
make install
此时在/crosstool/mips64el-tools/mips64el-linux/目录下多了kbproto相关文件。
安装inputproto
建立libX11库所依赖。
进入目录/crosstool/x11,解压源码包
tar zxvf ../source/x11proto-input_2.0.2.orig.tar.gz
进入工作目录,进行配置、编译和安装
cd inputproto-2.0.2/
BUILD_CC="gcc" CC="mips64el-linux-gcc -mabi=64" AR=mips64el-linux-ar LD=mips64el-linux-ld RANLIB=mips64el-linux-ranlib ./configure --target=mips64el-linux --host=mips64el-linux --prefix=/crosstool/mips64el-tools/mips64el-linux
make install
此时在/crosstool/mips64el-tools/mips64el-linux/目录下多了inputproto相关文件。
建立libXdmcp库
建立libX11库所依赖。
进入目录/crosstool/x11,解压源码包
tar zxvf ../source/libxdmcp_1.1.0.orig.tar.gz
进入工作目录,进行配置、编译和安装
cd libXdmcp-1.1.0/
BUILD_CC="gcc" CC="mips64el-linux-gcc -mabi=64" AR=mips64el-linux-ar LD=mips64el-linux-ld RANLIB=mips64el-linux-ranlib ./configure --target=mips64el-linux --host=mips64el-linux --prefix=/crosstool/mips64el-tools/mips64el-linux
make install
此时在/crosstool/mips64el-tools/mips64el-linux/目录下多了libXdmcp库相关文件。
建立libX11库
进入目录/crosstool/x11,解压源码包
tar xvf ../source/libX11-1.3.2.tar.bz2
进入工作目录/crosstool/x11/ libX11-1.3.2,进行配置
cd libX11-1.3.2/
BUILD_CC="gcc" CC="mips64el-linux-gcc -mabi=64" AR=mips64el-linux-ar LD=mips64el-linux-ld RANLIB=mips64el-linux-ranlib ./configure --target=mips64el-linux --host=mips64el-linux --prefix=/crosstool/mips64el-tools/mips64el-linux
checking whether malloc(0) returns NULL... configure: error: in `/crosstool/x11/libX11-1.3.2':
configure: error: cannot run test program while cross compiling
See `config.log' for more details.
这是因为host为mis64el-linux,configure中的测试程序不可以在host上运行。在configure中查找malloc(0)相关定义,发现在配置时可以使用命令--enable-malloc0returnsnull来跳过这个测试。
重新配置,通过,然后编译
/crosstool/mips64el-tools/mips64el-linux/include/bits/types.h:129:3: error: #error
In file included from /crosstool/mips64el-tools/mips64el-linux/include/sys/types.h:31:0,
from /crosstool/mips64el-tools/mips64el-linux/include/X11/Xos.h:42,
from makekeys.c:35:
/crosstool/mips64el-tools/mips64el-linux/include/bits/types.h:134:1: error: unknown type name ‘__STD_TYPE’
查看源码/crosstool/mips64el-tools/mips64el-linux/include/bits/types.h发现是因为__WORDSIZE的原因使得__STD_TYPE没有定义。于是查看wordsize.h发现__WORDSIZE是如下定义
#define __WORDSIZE _MIPS_SZPTR
肯定是不认的,于是将之改为
#ifdef _MIPS_SZPTR
#define __WORDSIZE _MIPS_SZPTR
&&&&推荐文章:
【上篇】【下篇】

我要回帖

更多关于 cmake 交叉编译 的文章

 

随机推荐