制作小型c项目

制作小型c项目,c,C,外面的每个人 我编写了一个非常简单的c代码,如下所示: #include<stdio.h> int main() { int a,b,s,m,d; system("clear"); int a =20; int b =40; s=sum(a,b); m=mul(a,b); d=div(a,b); printf("\n the sum of given no. = %d\nThe product of given no.

外面的每个人 我编写了一个非常简单的c代码,如下所示:

#include<stdio.h>
int main()
{
    int a,b,s,m,d;
    system("clear");
    int a =20;
    int b =40;
    s=sum(a,b);
    m=mul(a,b);
    d=div(a,b);
    printf("\n the sum of given no. = %d\nThe product of given no. = %d\nThe division of given no = %d",s,m,d);
    return 0;
}
#包括
int main()
{
INTA、b、s、m、d;
系统(“清除”);
INTA=20;
int b=40;
s=总和(a,b);
m=mul(a,b);
d=div(a,b);
printf(“\n给定编号的和=%d\n给定编号的乘积=%d\n给定编号的除法=%d”,s,m,d);
返回0;
}
文件名为exp.c 然后我编写以下代码:

#include<stdio.h>
int sum( int x ,int y)
{
   int z;
   z=x+y;
   return z;
}
#包括
整数和(整数x,整数y)
{
intz;
z=x+y;
返回z;
}
我把它存为sum 然后我编写以下代码:

#include<stdio.h>
int mul( int z ,int u)
{
   int v ;
   v=z+u;
   return v;
}
#包括
int mul(int z,int u)
{
INTV;
v=z+u;
返回v;
}
另存为mul.c 然后我编写以下代码

#include<stdio.h>
int div (int a, int b)
{ 
   int f;
   f=a/b;
   return f;
}
#包括
内部分区(内部a、内部b)
{ 
int f;
f=a/b;
返回f;
}
另存为div.c

现在我的问题是,我想将所有文件作为单个项目使用。 我希望exp.c使用mul.c,div.c,sum.c中定义的函数 我想知道怎么做? 如何制作图书馆表格mul.c,div.c,sum.c? 如何将这些库与exp.c关联? 有人能给我解释一下制作这个项目的详细过程吗?
我正在使用ubuntu作为我的操作系统。请帮助我阅读
make
——这将回答您关于构建/编译等方面的问题


您应该有一个包含函数原型的
.h
文件。它不是严格需要的(因为你的函数返回
int
),但你现在必须养成这个习惯,因为它以后不会很容易实现

阅读
make
——这将回答你关于构建/编译等的问题


您应该有一个包含函数原型的
.h
文件。它不是严格需要的(因为您的函数返回
int
),但您现在必须养成这个习惯,因为它以后不会很容易实现。最简单的方法是不创建库,而是将它们全部编译成一个可执行文件:

$ gcc -o myprogram sum.c mul.c div.c
 gcc exp.c sum.c div.c mul.c
这有一个缺点,就是您将一直重新编译所有代码,因此随着文件变大,代价(构建时间)会增加,因为即使只更改div.c(例如),也会迫使您重新编译sum.c和mul.c

下一步是分别编译它们,并保留对象文件。为此,我们可以使用如下生成文件:

myprogram: sum.o mul.o div.o

sum.o:     sum.c

mul.o:     mul.c

div.o:     div.c

这将保留对象文件,当您键入make时,make工具将比较对象文件的时间戳和C文件的时间戳,并且只重新编译更改的时间戳。请注意,要使上述功能正常工作,每个冒号后面必须有一个物理选项卡。

最简单的方法是不创建库,而是将它们一起编译成一个可执行文件:

$ gcc -o myprogram sum.c mul.c div.c
 gcc exp.c sum.c div.c mul.c
这有一个缺点,就是您将一直重新编译所有代码,因此随着文件变大,代价(构建时间)会增加,因为即使只更改div.c(例如),也会迫使您重新编译sum.c和mul.c

下一步是分别编译它们,并保留对象文件。为此,我们可以使用如下生成文件:

myprogram: sum.o mul.o div.o

sum.o:     sum.c

mul.o:     mul.c

div.o:     div.c

这将保留对象文件,当您键入make时,make工具将比较对象文件的时间戳和C文件的时间戳,并且只重新编译更改的时间戳。请注意,要使上述功能正常工作,每个冒号后面必须有一个物理选项卡。

为此,您需要执行以下几个步骤:

  • 在主文件中声明函数编译主文件(exp.c)时,编译器将输出一个错误,因为他不知道sum、mul等是什么类型的函数。所以你必须通过
    intsum(intx,inty)来声明它们。更通用的方法(更清晰)是将文件中的所有函数(不是所有函数,而是将从其他文件访问的函数)写入头文件,然后包括头文件

  • 编译每个文件您需要编译每个文件。这可以通过一个简单的
    gcc-cmul.c
    等来完成。这将创建一个mul.o-a机器语言文件

  • 链接它们编译每个文件后,您需要将它们放在一个可执行文件中。这是通过
    gcc-o outputname mul.o sum.o…


  • 请注意,步骤2和步骤3也可以组合在一起,我只是想清楚地解释一下这些步骤。这通常是通过生成文件来实现的,以稍微加快速度。为此,您需要执行以下几个步骤:

  • 在主文件中声明函数编译主文件(exp.c)时,编译器将输出一个错误,因为他不知道sum、mul等是什么类型的函数。所以你必须通过
    intsum(intx,inty)来声明它们。更通用的方法(更清晰)是将文件中的所有函数(不是所有函数,而是将从其他文件访问的函数)写入头文件,然后包括头文件

  • 编译每个文件您需要编译每个文件。这可以通过一个简单的
    gcc-cmul.c
    等来完成。这将创建一个mul.o-a机器语言文件

  • 链接它们编译每个文件后,您需要将它们放在一个可执行文件中。这是通过
    gcc-o outputname mul.o sum.o…

  • 请注意,步骤2和步骤3也可以组合在一起,我只是想清楚地解释一下这些步骤。这通常通过Makefile来完成,以加快速度。首先,您需要在相应的头文件中声明每个函数(您不必使用头文件,但这是最常用的方法)。例如,
    div.h
    可能看起来像:

    #ifndef DIV_H_
    #define DIV_H_
    
    int div(int a, int b);
    
    #endif
    
    然后,您将在使用相应函数的源文件中包含头文件

    然后,要编译并链接:

    gcc -o my_prog exp.c sum.c mul.c div.c
    
    正如其他人所建议的那样,你让自己想好好读一读
    gcc exp.c mylib.a
    
    #ifndef MODULE_NAME
    #define MODULE_NAME
    void module_func();
    #endif
    
    #include "module.h"
    void module_func(){
      //implementation
    }