CentOS 开发问题

部门使用一台安装CentOS 64bit的服务器,编译一个简单的Hello World 程序在其他的Linux PC下运行,失败了。原因就是生成了64位的可执行程序,其它PC是32位的,当然失败, 通过命令:
# objdump -f a.out
查看关键字 elf32-i386 (32bit) or elf64-x86-64 (64bit)
所以再64bit CentOS下需要编译32bit的可执行程序,需要加上"-m32"选项

运行: # gcc -m32 -o work work.c
出错:error: gnu/stubs-32.h: No such file or directory出错:
缺少32bit的头文件,输入:
# yum -y install glibc-devel.i686 glibc-devel
安装了头文件

再次运行: # gcc -m32 -o work work.c
新的错误:
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-redhat-linux/4.4.6/libgcc_s.so when searching for -lgcc_s
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-redhat-linux/4.4.6/libgcc_s.so when searching for -lgcc_s
/usr/bin/ld: cannot find -lgcc_s
开始在我的Linux目录下:
#ls /usr/lib/gcc/x86_64-redhat-linux/4.4.6/32/libgcc_s.so
存在so,后来仔细检查发现是一个软连接,指向的位置确实空的,所以找不到libgcc_s
如何安装相应的动态库,希望使用yum安装,但是网上说的都不起作用,郁闷了

最后访问CentOS的网站,获得相对应的rpm包
libgcc-4.4.6-3.el6.i686.rpm
通过 #rpm -ihv  libgcc-4.4.6-3.el6.i686.rpm
顺手安装了另外一个安装包 libstdc++-4.4.6-3.el6.i686.rpm
libstdc++-4.4.6-3.el6.i686.rpm 是通过g++编译cpp文件
重新运行:# gcc -m32 -o work work.c

终于成功了!

后来,服务器格式化,需要重装(安装为Centos6.5, 使用gcc4.4.7了)
通过 #rpm -ihv  libstdc++-4.4.7-4.el6.i686.rpm
失败,后来尝试:
#yum install libstdc++-4.4.7-4.el6.i686.rpm
解决战斗!

后来安装一个新的包ncurses-libs-5.7-3.20090208.el6.i686.rpm,支持libncursesw.so,悲催了是始终编译失败,提示
/usr/bin/ld: skipping incompatible /usr/lib64/libncursesw.so when searching for -lncursesw
/usr/bin/ld: cannot find -lncursesw
collect2: ld returned 1 exit status
但是我肯定安装了啊,并且确定是支持32位的,后来发现
lrwxrwxrwx 1 root root     18 Oct 15 14:28 /lib/libncursesw.so.5 -> libncursesw.so.5.7
-rwxr-xr-x 1 root root 195244 Aug 18  2010 /lib/libncursesw.so.5.7
原来文件名是libncursesw.so.5 and libncursesw.so.5.7,找不到libncursesw.so
于是我在/usr/lib/下,运行:
# ln -s /lib/libncursesw.so.5 /usr/lib/libncursesw.so
一个软链接指向 *.so,加载动态库需要找到 *.so, 而不能只是 *.so.number




附加Ubuntu的问题,Ubuntu是64位的服务器
1.执行时提示:error while loading shared libraries: libncursesw.so.5: cannot open shared object file: No such file or directory
64位服务器缺少32的环境
#apt-get install lib32ncursesw5
就可以正常运行了,文件安装在 "/lib32/" 下




你可能感兴趣的:(CentOS 开发问题)