1.我们在桌面上创建一个TestX的文件夹
在文件夹下面创建一个main.c的文件 代码都是标准代码
#include <stdio.h>
int main()
{
printf("Hello, World!\n");
return 0;
}
没什么特别的
2. 编译和运行
命令行转到TestX目录
cd /Users/lidong/Desktop/TestX
执行编译命令
gcc -o main *.c //编译当前目录下所有的.c文件 生成一个main文件
stm-macmini-085:TestX lidong$ gcc -o main *.c
如果有错误编译器会提示错误
运行生成的main文件
执行 ./main
stm-macmini-085:TestX lidong$ ./main
Hello, World! //输出的打印信息
3 调用静态库
在目录下面创建两个文件 test.h test.c 就是个求和的代码
test.h
int add(int x,int y);
test.c
#include <stdio.h>
#include "test.h"
int add(int x,int y){
return x+y;
}
1)执行 gcc -Wall -c test.c 会生成一个test.o的文件
stm-macmini-085:TestX lidong$ gcc -Wall -c test.c
2)执行ar -cvq lib.a *.o 生成lib.a文件
stm-macmini-085:TestX lidong$ ar -cvq lib *.o
q - test.o
显示lib.a里面包涵的.o文件可以通过命令:
ar -t lib.a //ar 创建静态库命令
stm-macmini-085:TestX lidong$ ar -t lib.a
__.SYMDEF SORTED
test.o
3)调用静态链接库
删除文件夹里面的test.c文
修改main.c如下
#include <stdio.h>
#include "test.h"
int main()
{
printf("Hello, World!\n");
printf("%d\n",add(3,3));
return 0;
}
执行命令 gcc -o newmain *.c *.a
stm-macmini-085:TestX lidong$ gcc -o newmain *.c *.a
运行newmain文件:./newmain
stm-macmini-085:TestX lidong$ ./newmain
Hello, World!
6
调用成功
需要用到文件夹分开 通过以下下方式
$ gcc -o newmian file1.c file2.c ../util/libtestl.a 或者 $ gcc -o newmian file1.c file2.c -L../util/ -ltest
我们用Makefile来实现上面的过程 创建一下Makefile文件
代码如下: (注意Makefile冒号后要空一格 命令要tab)
start : test.o libtest.a clear main
./main
test.o :
gcc -Wall -c test.c
libtest.a :
ar -cvq libtest.a *.o
main :
gcc -o main main.c *.a
clear :
rm test.o
在该目录下
执行make
stm-macmini-085:TestX lidong$ make
rm test.o test.c
gcc -o main main.c *.a
./main
Hello, World!
6
stm-macmini-085:TestX lidong$