c脚本在不同系统中编译和链接依赖的库文件有何区别

c脚本在不同系统中编译和链接依赖的库文件有何区别,第1张

问题1,

区别很大,跨OS编译的区别就在于OS的本质区别,有一下几点:

a, 字节排序,一个int型的数据在windows里是由高地址存到低地址的4个字节的(假设是32位机器),但是在某些UNIX服务器,如AIX,它的排序方式就相反的,所以当程序被编译成低级语言(例如汇编)的时候,内存及CPU的处理就会截然相反

b, 字长,有些unix服务器是64位的,但大多WINDOWS是32位,那么定义一个整形的时候就有用8个字节和4个字节的区别,字长不一样,那么执行起来用对内存的使用也自然就不一样咯。

c,所谓的库,也是由编译器编译出来的,在不同的OS下,由同一个代码编译出来的库也会不一样。

d,编译器也各不相同,也会导致编译出程序不完全相同。

e,所谓的调用,也就是将程序和库一起打包,然后在找到库里面所定义的函数罢了

综上,当一个程序或者库要从其他OS搬到另一个不同规格的OS上的时候,一定要重新编译一下草能确保程序跑起来不发生错误,求其原因也就是因为OS的本质区别,兼容的话,其实就是看OS是否在规格上有没有本质区别

二,库文件的编译是单向的,所以无法取回源码,

a库的打包例: ar r libabca ao bo co

将ao bo co 合并打包成libabca。注意哦(a一定要以lib开始a结束哦)

WIN下我不是很在行,你说的lib大包应该没错。

三,我不是很清楚

希望对你有帮助,我2年工作的精华

从你的这个补丁文件名就可以看出,是先用tar归档后再压缩的,需要使用的时候反向 *** 作即可。

uncompress vacpp90aix61oct2007ptftarZ

tar xvf vacpp90aix61oct2007ptftar

然后在安装此文件

如果子程序调用成功,Windows下的system函数返回0,该返回值不是子进程返回值,在Windows系统中因为进程间没有维护相应的父子关系,所以,也无法得到子进程的返回值。

可以编写如下代码C代码:

#include <stdioh>

#include <stdlibh>

int main()

{

unsigned ueax = 0;

system("pause");

__asm mov eax, ueax //使用内联汇编,取eax寄存器的值,eax保存函数返回值

printf("%x\n", ueax);

return 0;

}

你要安装的是IBM的xlc吗?还是gcc编译器?

如果是xlc,首先在 *** 作系统中安装依赖的文件集,比如bosadt等等。

然后使用installp命令或者smit installp快捷菜单安装xlc,如果依赖的文件集没有安装,安装信息会有提示,并报错。

如果是gcc编译器,请按照gcc的说明文档编译安装。

以上就是关于c脚本在不同系统中编译和链接依赖的库文件有何区别全部的内容,包括:c脚本在不同系统中编译和链接依赖的库文件有何区别、AIX 6.1环境安装的xlc 9.0版本编译器但是不能编译,求大神指教越详细越好~、AIX c程序里system调用返回720907码是什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10122929.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存