centos上编译的可执行程序在suse上无法运行
2015-06-04 23:30
465 查看
在centos6.2上制作了一个可执行程序,取名为aio_test,其实是一个利用libaio读写文件的程序。
在centos6.2上可以正常编译,可以正常执行aio_test。
当我把aio_test直接copy到一个suse 10的机器上时,发现提示错误,找不到/lib64/libuuid.so (aio_test中用到了uuid库)。
后来才发现,suse机器的libuuid库是放在/usr/ lib64/中的,而不是像centos放在/lib64/中,所以aio_test一直提示说找不到uuid库。
其实这里有一个问题,难道同一个可执行程序,对于不同Linux发行版本,都要重新编译一次吗,centos一次,Ubuntu一次,suse一次,等等。
目前还没有找到答案,希望有大牛可以告诉我答案。
当我把aio_test放到suse 10中重新编译时,发现编译错误,提示说aio中的几个接口无法链接,其中的一个是io_prep_pwritev和io_prep_preadv。
这两个接口是在libaio 0.3.109版本才有的,一查看suse机器中/usr/lib64/libaio.h文件时,果然没有发现这两个接口。
果断从其他的suse机器上将新的libaio.h和libiao.so分别覆盖原来的/usr/lib64/libaio.h 和/usr/lib64/libaio.so,再次编译就通过了。
之后运行aio_test也是正常的。
在centos6.2上可以正常编译,可以正常执行aio_test。
当我把aio_test直接copy到一个suse 10的机器上时,发现提示错误,找不到/lib64/libuuid.so (aio_test中用到了uuid库)。
后来才发现,suse机器的libuuid库是放在/usr/ lib64/中的,而不是像centos放在/lib64/中,所以aio_test一直提示说找不到uuid库。
其实这里有一个问题,难道同一个可执行程序,对于不同Linux发行版本,都要重新编译一次吗,centos一次,Ubuntu一次,suse一次,等等。
目前还没有找到答案,希望有大牛可以告诉我答案。
当我把aio_test放到suse 10中重新编译时,发现编译错误,提示说aio中的几个接口无法链接,其中的一个是io_prep_pwritev和io_prep_preadv。
这两个接口是在libaio 0.3.109版本才有的,一查看suse机器中/usr/lib64/libaio.h文件时,果然没有发现这两个接口。
果断从其他的suse机器上将新的libaio.h和libiao.so分别覆盖原来的/usr/lib64/libaio.h 和/usr/lib64/libaio.so,再次编译就通过了。
之后运行aio_test也是正常的。
相关文章推荐
- Linux socket 初步
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- 基于 Linux 集群环境上 GPFS 的问题诊断
- 谁是桌面王者?Win PK Linux三大镇山之宝
- vivi下重新调整分区
- Linux VS Unix:Linux欲一统天下 Unix不死
- linux下设定环境变量
- Linux下修改MySQL编码的方法