Rdesktop1.6.0交叉编译
软件包:rdesktop1.6.0.tar.gz
下载地址:
环境:ubuntu10.04 + mipsel-linux-gcc3.4.6
1.编译rdesktop1.6.0
$ tar xf rdesktop1.6.0.tar.gz
$ cd rdesktop-1.6.0
$ ./configure --build=i486-linux-gnu --host=mipsel-linux
$ make
出错信息:
xwin.c: In function `ui_select':
xwin.c:2606: error: impossible constraint in `asm'
xwin.c:2607: error: impossible constraint in `asm'
make: *** [xwin.o] Error 1
参考解决方法:
这个错误是由于FD_ZERO,FD_SET等函数引起的,再深查的话,发现其实这几个
函数都是宏,最后的定义在include/bits/select.h里面.这个错误是由于包括了错误的头文
件,用/opt/gcc-3.4.6/include/bits 里面的select.h(mipsel交叉工具链存放的目录) 替换掉
/usr/include/bits/select.h
$ sudo cp /opt/gcc-3.4.6/include/bits/select.h /usr/include/bits/
$ make
出错信息:
/tmp/cc6eQXXc.s: Assembler messages:
/tmp/cc6eQXXc.s:692: Error: unrecognized opcode `rorw $8,$2'
make: *** [tcp.o] Error 1
参考解决方法:
$ ./configure --build=i486-linux-gnu --host=mipsel-linux CFLAGS=-I/opt/gcc-3.4.6/mipsel-linux/include/
$ make
出错信息:
/opt/gcc-3.4.6/bin/../lib/gcc/mipsel-linux/3.4.6/../../../../mipsel-linux/bin/ld: cannot find -lcrypto
collect2: ld returned 1 exit status
参考解决方法:
缺少依赖库:crypto(编译openssl,openssl编译时最好是安装在默认路径(/usr/local)这样可 以一些出现找不到相应头文件的错误,如果是安装在别的目录里面的解决方法见最后)
$ make
出错信息:
/opt/gcc-3.4.6/bin/../lib/gcc/mipsel-linux/3.4.6/../../../../mipsel-linux/bin/ld: cannot find -lX11
collect2: ld returned 1 exit status
make: *** [rdesktop] Error 1
参考解决方法:
缺少依赖库:libx11(编译libx11)
$ make LDFLAGS=-L/home/loongson/lib_mipsel_gcc3.4.6/lib
或者:
$ ./configure --build=i486-linux-gnu --host=mipsel-linux --prefix=$PREFIX CFLAGS=-I/usr/include LDFLAGS=-L/home/loongson/lib_mipsel_gcc3.4.6/lib
$ make
出错信息:
/opt/gcc-3.4.6/bin/../lib/gcc/mipsel-linux/3.4.6/../../../../mipsel-linux/bin/ld: warning: libxcb.so.1, needed by /home/loongson/lib_mipsel_gcc3.4.6/lib/libX11.so, not found (try using -rpath or -rpath-link)
/home/loongson/lib_mipsel_gcc3.4.6/lib/libX11.so:对‘xcb_disconnect’未定义 的引用
/home/loongson/lib_mipsel_gcc3.4.6/lib/libX11.so:对‘xcb_writev’未定义的引 用
/home/loongson/lib_mipsel_gcc3.4.6/lib/libX11.so:对‘xcb_connect’未定义的 引用
/home/loongson/lib_mipsel_gcc3.4.6/lib/libX11.so:对‘xcb_generate_id’未定义 的引用
/home/loongson/lib_mipsel_gcc3.4.6/lib/libX11.so:对‘xcb_poll_for_event’未 定义的引用
/home/loongson/lib_mipsel_gcc3.4.6/lib/libX11.so:对‘xcb_wait_for_event’未 定义的引用
/home/loongson/lib_mipsel_gcc3.4.6/lib/libX11.so:对‘xcb_poll_for_reply’未 定义的引用
/home/loongson/lib_mipsel_gcc3.4.6/lib/libX11.so:对 ‘xcb_connect_to_display_with_auth_info’未定义的引用
/home/loongson/lib_mipsel_gcc3.4.6/lib/libX11.so:对‘xcb_get_setup’未定义 的引用
/home/loongson/lib_mipsel_gcc3.4.6/lib/libX11.so:对‘xcb_wait_for_reply’未 定义的引用
/home/loongson/lib_mipsel_gcc3.4.6/lib/libX11.so:对 ‘xcb_connection_has_error’未定 义的引用
/home/loongson/lib_mipsel_gcc3.4.6/lib/libX11.so:对‘xcb_get_file_descriptor’ 未定义 的引用
/home/loongson/lib_mipsel_gcc3.4.6/lib/libX11.so:对 ‘xcb_get_maximum_request_length’未定义的引用
/home/loongson/lib_mipsel_gcc3.4.6/lib/libX11.so:对‘xcb_parse_display’未定 义的引 用
/home/loongson/lib_mipsel_gcc3.4.6/lib/libX11.so:对‘xcb_take_socket’未定义 的引用
参考解决方法:
原因是没有找到库(默认在/usr/lib下找)
$ vim Makefile
在makefile的LDFLAGS后面添加路径
-Wl,--rpath-link -Wl,/home/loongson/lib_mipsel_gcc3.4.6/lib
保存退出
$make
或者:
在LDFLAGS后面加上路径与库名
-L/home/loongson/lib_mipsel_gcc3.4.6/lib -lxcb
保存退出
-lxcb 是根据编译库生成的pc
(/lib_mipsel_gcc3.4.6/lib/pkg-config/xcb.pc)文件里的 名字填写
或者:
$ make CC="mipsel-linux-gcc -rpath/home/loongson/lib_mipsel_gcc3.4.6/mylib/lib -L/home/loongson/lib_mipsel_gcc3.4.6/lib -lxcb"
注意:-rpath与/home/loongson/lib_mipsel_gcc3.4.6/lib之间没有空间(是紧连着的)
若使用后面两种方法的任意一种则可能出现如下错误信息:
/opt/gcc-3.4.6/bin/../lib/gcc/mipsel-linux/3.4.6/../../../../mipsel-linux/bin/ld: warning: l ibXau.so.6, needed by /home/loongson/lib_mipsel_gcc3.4.6/lib/libxcb.so, not found (try using -rpath or -rpath-link)
/home/loongson/lib_mipsel_gcc3.4.6/mylib/lib/libxcb.so:对‘XauGetBestAuthByAddr’未定 义的引用
/home/loongson/lib_mipsel_gcc3.4.6/mylib/lib/libxcb.so:对‘XauDisposeAuth’未定义的引 用
参考解决方法:
$ vim Makefile
在LDFLAGS后面加上路径与库名
-L/home/loongson/lib_mipsel_gcc3.4.6/lib -lxcb -lXau
保存退出
或者:
$ make CC="mipsel-linux-gcc -rpath/home/loongson/lib_mipsel_gcc3.4.6/lib -L/home/loongson/lib_mipsel_gcc3.4.6/lib -lxcb -lXau"
$ make
信息提示:
/opt/gcc-3.4.6/bin/../lib/gcc/mipsel-linux/3.4.6/../../../../mipsel-linux/bin/ld: skipping incompatible /usr/lib/libc.so when searching for -lc
/opt/gcc-3.4.6/bin/../lib/gcc/mipsel-linux/3.4.6/../../../../mipsel-linux/bin/ld: skipping incompatible /usr/lib/libc.a when searching for –lc
参考解决方法:
原因是在/usr/lib下没有找到合适的libc库
$ vi Makefile
把-L/usr/lib改为 -L/opt/gcc-3.4.6/mipsel-linux/lib
$ make
在当前目录下生成可执行文件:rdesktop
Openssl 安装在自定义目录的时出现的问题与处理方法
出错信息:
ssl.h:25:25: openssl/rc4.h:没有那个文件或目录
ssl.h:26:25: openssl/md5.h:没有那个文件或目录
ssl.h:27:25: openssl/sha.h:没有那个文件或目录
ssl.h:28:24: openssl/bn.h:没有那个文件或目录
ssl.h:29:28: openssl/x509v3.h:没有那个文件或目录
参考解决方法:
$ sudo find / -name rc4.h
/usr/include/openssl/rc4.h
/home/loongson/lib_mipsel_gcc3.4.6/include/openssl/rc4.h
$ make CFLAGS=-I/usr/include
或者:
$ make CFLAGS=-I/home/loongson/lib_mipsel_gcc3.4.6/include/
出错信息:
disk.c: In function `disk_create':
disk.c:429: 错误: 提领指向不完全类型的指针
make: *** [disk.o] 错误 1
参考解决方法:
$ make
其它问题同上
快速编译
$ tar xf rdesktop1.6.0.tar.gz
$ cd rdesktop-1.6.0
$ export CFLAGS="-g -I/opt/gcc-3.4.6/include/ -Wl,--rpath-link -Wl,/home/loongson/lib_mipsel_gcc3.4.6/mylib/lib"
$ export LDFLAGS="-L/home/loongson/lib_mipsel_gcc3.4.6/mylib/lib/ -L/opt/gcc-3.4.6/mipsel-linux/lib"
$ ./configure --build=i486-linux-gnu --host=mipsel-linux
$ make
毛小川
2011-1-13
阅读(1250) | 评论(0) | 转发(0) |