当前位置:  技术问答>linux和unix

初学 Linux 程序设计,问个关于库的错误

    来源: 互联网  发布时间:2016-08-19

    本文导语:  首先 编写文件  fred.c #include  void fred(int arg) {     printf("fred: you passed %dn", arg); } ============================ bill.c #include  void bill(char* arg) {      printf("bill: you passed %sn", arg); } =============================== lib....

首先 编写文件
 fred.c

#include 

void fred(int arg)
{
    printf("fred: you passed %dn", arg);
}


============================
bill.c

#include 

void bill(char* arg)
{
     printf("bill: you passed %sn", arg);
}


===============================

lib.c

void bill(char* );
void fred(int);


============================
program.c


#include "lib.c"
int main()
{
bill("Hi,How are u");
exot(0);
}


wengte@linux-ldg2:~/Desktop> gcc -c bill.c fred.c
wengte@linux-ldg2:~/Desktop> ls *.o
bill.o  fred.o
wengte@linux-ldg2:~/Desktop> gcc -c program.c
program.c:1:17: error: lib.c: 没有那个文件或目录
wengte@linux-p



为什么会需要 lib.c 呢,如果在 windows 下,应该相当于 dll 和头文件的关系

|
有这句#include "lib.c",当然要lib.c了。
不明白楼主想问啥。

|
应该用头文件吧!

把 lib.c 改为 lib.h

或把gcc -c -fPIC bill.c fred.c
然后把 program.c 中 #include "lib.c" 去掉
gcc -L./ -lbill -lfred program.c

|
wengte@linux-ldg2:~/Desktop> gcc -c bill.c fred.c
wengte@linux-ldg2:~/Desktop> ls *.o
bill.o fred.o
wengte@linux-ldg2:~/Desktop> gcc -c program.c
program.c:1:17: error: lib.c: 没有那个文件或目录
wengte@linux-p
1. 生成动态链接库应该用gcc -shared -o -fIPC链接成so文件。
2. 出现的错误,应该是因为lib.c与program.c并不在同一文件下。预编译替换文件时就出错了。

|

[root@localhost c]# gcc -c bill.c fred.c
[root@localhost c]# ls *.o
bill.o  fred.o
[root@localhost c]# gcc -c program.c
program.c: 在函数‘main’中:
program.c:5: 警告:隐式声明与内建函数‘exit’不兼容
[root@localhost c]# ls *.o
bill.o  fred.o  program.o
[root@localhost c]# gcc -o a *.o
[root@localhost c]# ./a
bill: you passed Hi,How are u
[root@localhost c]# 
在我机子上通过。

|
为什么会需要 lib.c 呢,如果在 windows 下,应该相当于 dll 和头文件的关系

既然include了肯定要让代码识别到lib。c这个文件的存在。
windows下的dll和头文件的关系:
头文件只是对dll内符号信息的描述,实现和入口肯定是在dll中的

|
设为中文环境自然提示就是中文了呗~

|
1. 头文件的文件名,你写错了。
lib.c --> lib.h

2. 需要将bill.c和fred.c编译成动态/静态链接库。并且动态/静态链接库的文件名必须以是lib.so/lib.ao。这样,头文件lib.h才能起作用。


|
动态链接库: lib.so
静态链接库: lib.a

    
 
 

您可能感兴趣的文章:

  • 初学linux程序设计,有个程序找不到思路,跪求大神指点!
  • 初学linux程序设计的问题
  • 初学linux,请问《Unix环境高级编程》和《Linux程序设计》哪本书比较适合先看?
  • 初学编程,很菜的问题。。为什么会出现这种错误?
  • me是Java初学者,这个错误提示是什么意思?
  • 这个编译错误如何解决?——初学者的疑问!
  • 我是一名java初学者,执行第一个java程序welcome.java出现了以下错误,这是为什么?
  • 谁能帮我看看下面的代码有什么错误,我是初学者。
  • 初学者提问:main里的的参数String[] args是表示什么?我在运行下列语句时会出错(但编译无错误)。
  • 初学Oracle最经常碰到的错误及解决方案
  • 初学者,make xmiconfig 出现错误,没看懂,不知道怎么修改,请大家帮帮忙
  • C语言初学者代码中的常见错误与问题
  • 本人初学linux,那位高手帮我修改下下面的程序,错误提示已经列出来了,谢谢。
  • 初学,大家帮忙看下,我在make时总是出现创建线程失败的错误报告,为什么呢?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 初学 java 的朋友来和我交朋友,我也是初学。我的 QQ 号是 33555085
  • 又一个初学者的困惑!如果您是个大虾,请你一定要进来看看,指点迷津!如果您也是个初学者,那么您也一定要进来,也许我们有一样的遭遇!
  • 初学者的问题我是linux初学者,我想问一下在windows里下载的大于1.44M文件如何转移到linux分区里?
  • 我是个初学者,希望指点明津
  • docker中文入门学习手册 iis7站长之家
  • 对于初学者应该看什么样的java书籍
  • 初学java应该看那些书?
  • 初学linux看哪本书好?
  • 初学java,该看那些书,请朋友们指教
  • 我是初学者,该用什么java的“编译器”????
  • 初学java什么书好?
  • 对于初学者应该看什么样的书
  • 初学者:不是问题的问题?
  • 初学者这样检验自己的学习效果呢?
  • 初学JAVA,用哪个软件来调试和编译程序?
  • 初学者的问题??在线等待。
  • 各位高手大家好,我是初学LINUX想请教几个问题
  • 初学者的疑问
  • 从初学Linux到内核开发
  • 初学java的话,从何入手呢?vj++,还是jbuilder?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3