[关闭]
@CrazyHenry 2018-05-19T19:33:50.000000Z 字数 1352 阅读 1140

1.gcc/g++/make

xxxxLinuxTools

gcc

  1. gcc -O -c sin.c # 执行后生成sin.o目标文件
  2. # 一般在链接生成可执行文件的时候,才需要-L和-I参数
  3. # -L/usr/lib -L/lib 为默认的链接函数库查找路径(.so和.a)
  4. # -I/usr/include 为默认的include函数库(#include <stdio>)
  5. # -lm 表示链接的函数库为--libm.so或者libm.a
  6. # -O表示根据环境优化编译过程
  7. gcc sin.c -lm -L/usr/lib -L/lib -I/usr/include #执行后生成a.out可执行文件
  8. gcc -Wall -o sin sin.c -lm -L/usr/lib -L/lib -I/usr/include #执行后生成sin可执行文件。由于sin.c只有一个文件,所以可以直接-o。-Wall表示编译更加严谨
  9. gcc -O -c Hello.c Thank.c #生成Hello.o Thank.o
  10. gcc -Wall -o HelloThank Hello.o Thank.o -lm -L/usr/lib -L/lib -I/usr/include #生成HelloThank可执行文件

make

image_1cdjobf471h5b138b1kmk1v2iltap.png-50.1kB

需要main.o value.o cos_compute.o sinc_compute.o四个文件来做链接

方式1:

  1. main: main.o value.o cos_compute.o sinc_compute.o
  2. <tab> gcc -o main main.o value.o cos_compute.o sinc_compute.o -lm
  3. clean:
  4. <tab> rm -rf main main.o value.o cos_compute.o sinc_compute.o

方式2:

  1. LIBS = -lm
  2. OBJS = main.o value.o cos_compute.o sinc_compute.o
  3. CFLAGS = -Wall
  4. main: ${OBJS}
  5. <tab> gcc -o $@ ${OBJS} ${LIBS} # $@表示当前的target即 main
  6. clean:
  7. <tab> rm -rf main ${OBJS}

image_1cdjonnb91eevit11e2hrcs1sts16.png-42.1kB

  1. make clean main CFLAGS="-Wall" #第一优先级使用的CFLAGS
  2. make clean main #使用makefile里的变量

其他环境变量:

  1. CPPFLAGS -I标记非标准头文件存放路径 # include
  2. LDFLAGS -L标记非标准函数库存放路径 # .so或者.a
  3. make -f myMakefile \
  4. LDFLAGS='-L/var/xxx/lib -L/opt/mysql/lib' \
  5. CPPFLAGS='-I/usr/local/libcom/include -I/usr/local/libpng/include'

全过程

  1. ./configure --help #检查有什么配置参数, prefix表示安装路径
  2. ./configure --prefix=/usr/local/ntp \
  3. --enable-all-clocks --enable-parse-clocks #配置并且生成makefile,安装到usr/local/ntp目录下
  4. make clean; make
  5. make install

image_1cdjqh3rsqpkri7c3ecr7vd1j.png-29.2kB

需要将/usr/local/ntp/bin添加到PATH环境变量中,才能使用这个可执行文件。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注