Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1522211
  • 博文数量: 290
  • 博客积分: 3468
  • 博客等级: 中校
  • 技术积分: 3461
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-28 22:21
文章分类

全部博文(290)

文章存档

2016年(13)

2015年(3)

2014年(42)

2013年(67)

2012年(90)

2011年(75)

分类: 嵌入式

2012-12-14 09:42:56

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

阅读(1856) | 评论(1) | 转发(1) |
给主人留下些什么吧!~~

protheschildren2013-02-01 14:30:10

拜读了,不错的,收藏了,