Linux下采用gcc编译应用程序一般有以下几种情况。
1.直接编译成可执行文件。
示例如下:
#include
void foo()
{
printf("foo.\n");
}
int main(int argc, char * argv[])
{
foo();
}
gcc foo.c -o foo
运行:
./foo
结果:
foo.
2.将代码编译为静态库*.a。
foo.c
#include
void foo()
{
printf("foo.\n");
}
#ifndef _FOO_H_
#define _FOO_H_
void foo(void);
#endif
gcc -c foo.c -o foo.o
然后将foo.o添加到库,注意命名格式lib*.a
ar cr libfoo.a foo.o
使用,注意顺序
gcc main.c -L. -lfoo -o app
运行:
./app
结果:
foo.
3.将代码编译为动态库*.so。
oo.c
#include
void foo()
{
printf("foo.\n");
}
#ifndef _FOO_H_
#define _FOO_H_
void foo(void);
#endif
gcc -fPIC foo.c -o foo.o
添加到库:
gcc -shared -fPIC -o libfoo.so foo.o
注意,需将libfoo.so复制到/usr/lib,需要root权限
sudo cp libfoo.so /usr/lib
测试同上