[ 永远的UNIX::UNIX技术资料的宝库 ]

首页 > 编程技术 > C/C++ > 正文
用gcc 编译,为何有不同的结果 (关于socket函数)?
本文出自:http://www.pcworld.com.cn 作者: (2001-08-29 10:00:00)
---- 我 使 用 的 是Sun 工 作 站, 安 装 的 是Solaris 7 操 作 系 统。 在 我 使 用gcc 进 行 网 络 编 程 时, 
编 译 的 时 候 没 有 出 现 错 误 提 示, 但 是 在 编 译 后, 系 统 却 提 示 我 所 有 的socket 函 数 没 有 
定 义, 因 此 程 序 不 能 运 行, 可 是 我 确 实 在 源 程 序 中 已 经 使 用 了include 语 句 把 应 该 调 用 
的 网 络 库 全 都 加 进 去 了, 为 什 么 还 有 问 题 呢 ? 奇 怪 的 是, 同 样 的 源 程 序, 我 在Linux 6.0 
上 编 译 时 就 可 以 通 过, 说 明 程 序 本 身 没 有 问 题, 是 否 是 我 的Solaris 7 操 作 系 统 的 问 题 呢 ? 

---- 这 并 不 是Solaris 7 的 问 题, 而 是 两 个 操 作 系 统 之 间 的 差 异 造 成 的。Solaris 7 和Linux 6.0 
虽 然 同 属 于Unix 系 统, 但 是 还 是 有 很 大 的 区 别, 就 拿C 编 译 器gcc 来 说,Solaris 7 的gcc 比
Linux 6.0 上 的gcc 在 语 法 要 求 上 要 严 格 得 多, 而 且 在 编 译 时,Solaris 7 的gcc 要 求 输 入 库 文 件, 
而Linux 6.0 则 不 用。 您 在Solaris 7 上 遇 到 的 情 况 就 是 因 为 在 编 译 时, 没 有 指 明 加 入 应 调 用 
的socket 库, 而 在Linux 6.0 则 会 自 动 加 入, 不 需 您 设 置, 所 以 可 以 编 译 通 过。 就 这 一 点 来 说,
Linux 6.0 的gcc 要 方 便 一 些。 如 果 是 在Solaris 7 上 编 译, 应 该 在gcc 后 面 加 入"-lsocket" 的 选 项。 
注 意"-l" 和"socket" 中 间 没 有 空 格。 如 果 在 编 译 时 还 提 示 有 某 些 函 数 没 有 定 义, 则 应 再 加 
入"-lnsl" 选 项。 比 如, 假 设 您 的 源 程 序 名 为test.c, 则 在 编 译 时 应 输 入 如 下 的 命 令: 

---- gcc -lsocket -lnsl test.c 

---- 这 样 程 序 就 可 以 在Solaris 7 编 译 通 过 了。 

(http://www.fanqiang.com)
    进入【UNIX论坛

相关文章
关于gcc/egcs/pgcc (2002-01-29 20:22:21)
用gcc 编译,为何有不同的结果 (关于socket函数)? (2001-08-29 10:00:00)
在Solaris系统中安装GCC编译器 (2001-06-25 18:08:00)
GCC HOWTO中译版V0.2 --- 8. 与发展人士联络,9. 结语 (2001-06-22 13:04:00)
GCC HOWTO中译版V0.2 --- 7. 动态载入 (2001-06-22 12:10:01)
GCC HOWTO中译版V0.2 --- 6. 连结 (2001-06-22 11:00:00)
GCC HOWTO中译版V0.2 --- 5. 除错与监管 (2001-06-22 10:08:00)
GCC HOWTO中译版V0.2 --- 4. 移植程式与编译程式 (2001-06-22 09:04:00)
GCC HOWTO中译版V0.2 --- 3. GCC的安装与GCC的设定 (2001-06-22 08:10:00)
GCC HOWTO中译版V0.2 --- 2. 东东在哪儿? (2001-06-22 07:00:00)

===更多相关===
 

★  樊强制作 欢迎分享  ★