@CrazyHenry
2018-05-19T19:33:50.000000Z
字数 1352
阅读 1140
xxxxLinuxTools
gcc -O -c sin.c # 执行后生成sin.o目标文件
# 一般在链接生成可执行文件的时候,才需要-L和-I参数
# -L/usr/lib -L/lib 为默认的链接函数库查找路径(.so和.a)
# -I/usr/include 为默认的include函数库(#include <stdio>)
# -lm 表示链接的函数库为--libm.so或者libm.a
# -O表示根据环境优化编译过程
gcc sin.c -lm -L/usr/lib -L/lib -I/usr/include #执行后生成a.out可执行文件
gcc -Wall -o sin sin.c -lm -L/usr/lib -L/lib -I/usr/include #执行后生成sin可执行文件。由于sin.c只有一个文件,所以可以直接-o。-Wall表示编译更加严谨
gcc -O -c Hello.c Thank.c #生成Hello.o Thank.o
gcc -Wall -o HelloThank Hello.o Thank.o -lm -L/usr/lib -L/lib -I/usr/include #生成HelloThank可执行文件
需要main.o value.o cos_compute.o sinc_compute.o
四个文件来做链接
方式1:
main: main.o value.o cos_compute.o sinc_compute.o
<tab> gcc -o main main.o value.o cos_compute.o sinc_compute.o -lm
clean:
<tab> rm -rf main main.o value.o cos_compute.o sinc_compute.o
方式2:
LIBS = -lm
OBJS = main.o value.o cos_compute.o sinc_compute.o
CFLAGS = -Wall
main: ${OBJS}
<tab> gcc -o $@ ${OBJS} ${LIBS} # $@表示当前的target即 main
clean:
<tab> rm -rf main ${OBJS}
make clean main CFLAGS="-Wall" #第一优先级使用的CFLAGS
make clean main #使用makefile里的变量
其他环境变量:
CPPFLAGS -I标记非标准头文件存放路径 # include
LDFLAGS -L标记非标准函数库存放路径 # .so或者.a
make -f myMakefile \
LDFLAGS='-L/var/xxx/lib -L/opt/mysql/lib' \
CPPFLAGS='-I/usr/local/libcom/include -I/usr/local/libpng/include'
./configure --help #检查有什么配置参数, prefix表示安装路径
./configure --prefix=/usr/local/ntp \
--enable-all-clocks --enable-parse-clocks #配置并且生成makefile,安装到usr/local/ntp目录下
make clean; make
make install
需要将/usr/local/ntp/bin
添加到PATH环境变量中,才能使用这个可执行文件。