CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Linux/Unix社区 >  程序开发区

编译通过但连接有问题,刚接触LINUX编程,我想这个问题应该很简单,可我 还是不会~! 求教~!!

楼主xwsun(mov)2004-09-02 11:47:50 在 Linux/Unix社区 / 程序开发区 提问

小弟现在自己有一个.C文件,是一个可以单独运行的一段程序,现在我在这个基础上又加了一个的头文件和   一个.C源文件,这些都在同一个目录下,编译的时候可以通过   但连接的时候说找不到我在头文件中声明且在.C文件中定义的函数,整个程序如下(代码本身没有错误,故简略):  
  ///////////////////////////////////////////////  
  /*main.c*/  
   
  #include   <stdio.h>  
  ...   ...  
  main()  
  {      
          port(22);  
          printf("thanks~!");  
  }  
   
  /*port.h*/  
  ////////////////////////////////////////////////  
  #ifndef   _PORT_H  
  #define   _PORT_H  
   
  #include   <stdio.h>  
   
  int   port(int   port   );  
   
  #endif  
  //////////////////////////////////////////////////  
   
  /*port.c*/  
  #include   <stdio.h>  
  int   port   (int   port)  
  {  
            printf("thank   you   very   much~!");  
            return   1;  
  }  
  当单独编译port.c   和   main.c是都没有错误(gcc   -c   main.c   -o   main.o   ),但连接main.c是错误提示是这样的  
  (gcc   -g   main.c   -o   main):  
  ......main.c352   :undefined   reference   to   'port'  
  这个问题是不是应该再有一些什么样的   参数来指明连接的头和原文件  
  或者是不是要把port.h和port.c放到系统的什么地方   啊   ?  
  问题点数:50、回复次数:8Top

1 楼chendc(独行侠)回复于 2004-09-02 12:02:00 得分 2

咦,这个问题以前我也碰到过,不知道怎么回事,把一个文件拆成两个就是不行。Top

2 楼yanghuajia(我要抢分)回复于 2004-09-02 12:02:00 得分 8

/*main.c*/  
   
  #include   <stdio.h>  
   
  #include   <port.h>  
  //^^^^^^^^^^^^^^  
  ...   ...  
  main()  
  {      
          port(22);  
          printf("thanks~!");  
  }Top

3 楼yanghuajia(我要抢分)回复于 2004-09-02 12:04:44 得分 20

倒!  
  楼主犯这么低级的   。。。  
   
  》》但连接main.c是错误提示是这样的  
  》》   (gcc   -g   main.c   -o   main):  
   
  连接命令   gcc   main.o   port.o   -o   main  
  Top

4 楼lifeixiao(李飞笑)回复于 2004-09-02 12:34:27 得分 5

在main.c中加入#include   "port.h"   就行了Top

5 楼blh(当你不割肉时,你的损失只是个数字,当你割肉时,你的损失就是你的肉)回复于 2004-09-02 12:41:32 得分 15

try   gcc   -o   main   main.c   port.cTop

6 楼xwsun(mov)回复于 2004-09-02 13:11:34 得分 0

在main.c中加入#include   "port.h"    
  这个我   忘记写了    
  Top

7 楼xwsun(mov)回复于 2004-09-02 13:18:58 得分 0

gcc   main.o   port.o   -o   main   和gcc   -o   main   main.c   port.c  
  都是正确的,真得感谢blh(老猫),yanghuajia(newperson)  
  我是刚刚才开始写LINUX的程序的,所以见笑了   ~~~`  
  埋单~!Top

8 楼xboy(无薇不至)回复于 2004-09-02 13:28:22 得分 0

uTop

相关问题

  • 怎样在linux下编译汇编程序?
  • 请问linux里的汇编程序是拿gcc编译的吗?
  • linux下编程中gcc编译提示“段错误”怎么办?
  • Windows编程编译问题
  • linux 0.01 编译
  • windows核心编程编译出错。
  • 哈夫曼编/译码器(编程题)
  • LINUX编程
  • Linux-PAM编程
  • 熟悉LINUX及WINDOWS DEBUG的高手请进:从LINUX的汇编程序编译生成过程移植到WINDOWS问题

关键词

  • 编译
  • 连接
  • 文件
  • gcc
  • port
  • main
  • 问题
  • 错误
  • thanks
  • 程序

得分解答快速导航

  • 帖主:xwsun
  • chendc
  • yanghuajia
  • yanghuajia
  • lifeixiao
  • blh

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo