手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

Linux与UNIX下编译的差异

[日期:2007-08-16] 来源:Linux公社  作者:Linuxidc [字体: ]
  Unix下大家一般都用cc进行编译,而LINUX下绝大多数软件都是用gcc编译,编译参数也有细节差异。

  仅列举一二:
  1、 -lsocket
  unix 如果用到socket的话,makefile需要加上 -lsocket,在linux中不再需要,因为,linux中libc.so里已包含含socket相关。

  2、 编译成so
  ${CC} -o $@ -shared -fPIC ${OBJECT}

  -shared 该选项指定生成动态连接库(让连接器生成T类型的导出符号表,有时候也生成弱连接W类型的导出符号),不用该标志外部程序无法连接,相当于一个可执行文件。

  -fPIC:表示编译为位置独立的代码,不用此选项的话编译后的代码是位置相关的所以动态载入时是通过代码拷贝的方式来满足不同进程的需要,而不能达到真正代码段共享的目的。

  3、使用so
  -L${HOME}/lib -lxml

  -L${HOME}/lib :表示要连接的库在$HOME/lib中

  -lxml:编译器查找动态连接库时有隐含的命名规则,即在给出的名字前面加上lib,后面加上.so来确定库名称,例如libxml.so

  LD_LIBRARY_PATH:这个环境变量指示动态连接器可以装载动态库的路径。

  4、main()函数
  gcc要求main必须返回int,cc无此要求。linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款