C脚本编译和链接的问题

[复制链接]
查看11 | 回复4 | 2009-6-27 19:34:39 | 显示全部楼层 |阅读模式
C脚本?C不是脚本语言,您混淆术语了
回复

使用道具 举报

千问 | 2009-6-27 19:34:39 | 显示全部楼层
在不同的平台用编译器重新编译一次,这种叫源码级移植。具体的编译和链接内部实现你不要关注,
回复

使用道具 举报

千问 | 2009-6-27 19:34:39 | 显示全部楼层
当然不一样了,windows下会编译成obj这样的中间文件,还有调试需要的pdb文件最终用.lib文件链接成pe可执行文件.linux下的不熟悉,但是用gcc编译的也会生成类似obj这样的中间文件,最终链接成elf格式文件.但是源码调试应该没有windows这么易用.(1)如果想跨平台的话最好自己写一个中间层,代码得考虑不同平台的系统调用而不同,建议不要考虑原生编译的,可以考虑java之类跨平台执行或者python之类脚本解释语言. add:谁说那些c标准函数不都是直接访问硬件和使用中断、端口的么c语法做为一个ISO国际标准,只要实现这个标准的编译器,无论什么平台都得实现这些c标准的库函数,至于底层是怎么实现的,不必关心细节,没有一个c标准函数会使用中断和访问端口,因为如果要访问的话是要跨入到cpu的内核ring0级的,在ring3下的标准函数是不可能具备这样的条件的.如果你想跨平台,参见我说的(1)
回复

使用道具 举报

千问 | 2009-6-27 19:34:39 | 显示全部楼层
一般来讲不同的 CPU 架构是用不同的编译器。比如 ARM 的就有需要用 ARM 的编译器。 (注意是 ARM 不是 AMD ),MIPSEL 的要用 MIPSEL 的编译器。现在的 GCC 支持很多 CPU 所以从网上下载一个 GCC ,自己编译,安装就可以做出来符合自己要求的编译器。对于普通应用程序来讲,只要没有用到不同的指令集,一般不需要针对 CPU 做特殊处理。对于不同的操作系统,主要和你调用的函数相关,如果全部使用C标准函数,一般来讲,不需要做特殊处理。但在实际工作中很难做到这点,程序多多少少都会用到和系统相关的函数(比如用到 MFC 或者 WINAPI函数),所以不同的操作系统很难使用相同的 Makefile 。
回复

使用道具 举报

千问 | 2009-6-27 19:34:39 | 显示全部楼层
你的这个问题我已经在另一个你提的问题里回答了,这里也可以做简要的阐述。windows的库文件是不能在linux上使用的,反之也是如此。http://zhidao.baidu.com/question/101177537.html如果必须引用的的话,需要找到编译出该库的源文件(.c),然后将其放到你要编译成库的OS里进行编译,然后才能引用。操作的话在windows里IDC已经替你做好库的连接,所以不用关心,但是在UNIX/LINUX就不一样了需要有两个必须文件libabc.a 和libabc.h在连接编译程序的是时候,大致参考以下的编译脚本cc test.c -g -o test.exe -I. -L. -labc假设你的.c文件和这两个文件在同一个目录下综上,操作原理都是一样,就是需要重编译库文件就OK了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行