编译配置 CPPFLAGSLDFLAGS

  • CPPFLAGS 是编译器参数,用于定义头文件(header) include 目录

  • LDFLAGS 是链接器(linker)参数,用于定义库文件(libraries) lib 目录

configure 可以向编译器传递上述参数,指定头文件(编译时使用)和库文件(链接时使用)

例如 macOS环境编译NGINX ,可以在 configure NGNIX 时候采用:

编译NGINX的 ./configure 指定pcre2/zlib/openssl的头文件和库文件位置
./configure \
    --sbin-path=/usr/local/nginx/nginx \
    --conf-path=/usr/local/nginx/nginx.conf \
    --pid-path=/usr/local/nginx/nginx.pid \
    --with-http_ssl_module \
    --with-stream \
    --with-mail=dynamic \
    --add-module=/usr/build/nginx-rtmp-module \
    --add-dynamic-module=/usr/build/3party_module \
    CPPFLAGS="-I/opt/pcre2/include -I/opt/zlib/include -I/opt/openssl/include" \
    LDFLAGS="-L/opt/pcre2/lib -L/opt/zlib/lib -L/opt/openssl/lib"

也可以在环境变量中配置好,这样就不用每次 configure 时传递

通过环境变量传递指定pcre2/zlib/openssl的头文件和库文件位置
cat << EOF > /opt/build_env
CPPFLAGS="-I/opt/pcre2/include -I/opt/zlib/include -I/opt/openssl/include" \
LDFLAGS="-L/opt/pcre2/lib -L/opt/zlib/lib -L/opt/openssl/lib"
export CPPFLAGS LDFLAGS
EOF

. /opt/build_env

参考