1. 编译 C 文件,生成 elf 可执行文件 h1.c 源文件
#include <stdio.h> void hellofirst(void)
{
printf("The first hello! ");
}
h2.c 源文件
#include <stdio.h> void hellosecond(void)
{
printf("The second hello! ");
}
hello.c 源文件
#include <stdio.h> void hellosecond(void); void hellofirst(void);
int main(int argc, char *argv[])
{
hellofirst(); hellosecond(); return(0);
}
编译以上 3 个文件,有如下几种方法:
方法 1:
[arm@localhost gcc]#armlinuxgcc c h1.c [arm@localhost gcc]#armlinuxgcc c h2.c
[arm@localhost gcc]#armlinuxgcc o hello hello.c h1.o h2.o
方法 2:
[arm@localhost gcc]#armlinuxgcc c h1.c h2.c [arm@localhost gcc]#armlinuxgcc o hello hello.c h1.o h2.o 方法 3:
[arm@localhost gcc]#armlinuxgcc c o h1.o h1.c
[arm@localhost gcc]#armlinuxgcc c o h1.o h1.c [arm@localhost gcc]#armlinuxgcc o hello hello.c h1.o h2.o 方法 4:
[arm@localhost gcc]#armlinuxgcc o hello hello.c h1.c h2.c
c: 只编译不连接。
o: 编译且连接。
2. 产生一个预处理文件 当要看一个宏在源文件中产生的结果时,比较合适。
[arm@localhost gcc]#armlinuxgcc E h1.i h1.c
E: 产生一个预处理文件.
3. 产生一个动态库
动态库是在运行时需要的库。
[arm@localhost gcc]#armlinuxgcc c fpic h1.c h2.c [arm@localhost gcc]#armlinuxgcc shared h1.o h2.o o hello.so [arm@localhost gcc]#armlinuxgcc o hello hello.c hello.so
把 hello.so 拷贝到目标板的/lib 目录下,把可执行文件拷贝目标板的/tmp 目录下,在目标板上运行 hello.
#/tmp/hello
或把 hello.so 和 hello 一起拷贝到/tmp 目标下,并设置 LD_LIBRARY_PATH 环境变量
#export LD_LIBRARY_PATH =/tmp:$LD_LIBRARY_PATH
#/tmp/hello