预定义变量

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 预定义变量
命令 含义 默认值
AR 库文件维护程序的名称 ar
AS 汇编程序的名称 as
CC C 编译器的名称 cc
CPP C 预编译器的名称 $(CC) -E
CXX C++ 编译器的名称 g++
FC FORTRAN 编译器的名称 f77
RM 文件删除程序的名称 rm -f
ARFLAGS 库文件维护程序的选项
ASFLAGS 汇编程序的选项
CFLAGS C 编译器的选项
CPPFLAGS C 预编译的选项
CXXFLAGS C++ 编译器的选项
FFLAGS FORTRAN 编译器的选项


CFLAGS 和 CXXFLAGS

CFLAGS 表示用于 C 编译器的选项, CXXFLAGS 表示用于 C++ 编译器的选项。这两个变量实际上涵盖了编译和汇编两个步骤。大多数程序和库在编译时默认的优化级别是 2 (使用 -O2 选项)并且带有调试符号来编译,也就是 CFLAGS="-O2 -g" , CXXFLAGS=$CFLAGS 。事实上, -O2 已经启用绝大多数安全的优化选项了。另一方面,由于大部分选项可以同时用于这两个变量,所以仅在最后讲述只能用于其中一个变量的选项。


CFLAGS 指定头文件.h 文件)的路径,如: CFLAGS=-I/usr/include -I/path/include 。同样地,安装一个包时会在安装路径下建立一个 include 目录,当安装过程中出现问题时,试着把以前安装的包的 include 目录加入到该变量中来。


LDFLAGS

gcc 等编译器会用到的一些优化参数,也可以在里面指定库文件的位置。用法: LDFLAGS=-L/usr/lib -L/path/to/your/lib 。每安装一个包都几乎一定的会在安装目录里建立一个 lib 目录。如果明明安装了某个包,而安装另一个包时,它愣是说找不到,可以将那个包的 lib 路径加入的 LDFALGS 中试一下。


LIBS

告诉链接器要链接哪些库文件,如 LIBS = -lpthread -liconv

简单地说, LDFLAGS 是告诉链接器从哪里寻找库文件,而 LIBS 是告诉链接器要链接哪些库文件。不过使用时链接阶段这两个参数都会加上,所以你即使将这两个的值互换,也没有问题。


有时候 LDFLAGS 指定 -L 虽然能让链接器找到库进行链接,但是运行时链接器却找不到这个库,如果要让软件运行时库文件的路径也得到扩展,那么我们需要增加这两个库给 -Wl,R

LDFLAGS = -L/var/xxx/lib -L/opt/mysql/lib -Wl,R/var/xxx/lib -Wl,R/opt/mysql/lib点击复制复制失败已复制


如果在执行 ./configure 以前设置环境变量 export LDFLAGS="-L/var/xxx/lib -L/opt/mysql/lib -Wl,R/var/xxx/lib -Wl,R/opt/mysql/lib" ,注意设置环境变量等号两边不可以有空格,而且要加上引号shell 的用法)。那么执行 configure 以后, Makefile 将会设置这个选项,链接时会有这个参数,编译出来的可执行程序的库文件搜索路径就得到扩展了。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
5月前
|
Unix Shell Linux
shell变量的作用域
shell变量的作用域。
48 0
|
11月前
|
Shell
Shell变量
Shell变量
|
Linux Perl
解决脚本实现:sed -i 替换变量,变量中含有特殊转义字符的问题
解决脚本实现:sed -i 替换变量,变量中含有特殊转义字符的问题
解决脚本实现:sed -i 替换变量,变量中含有特殊转义字符的问题
|
5月前
|
存储 Shell
Shell变量和参数
Shell变量和参数
34 3
|
5月前
|
Shell
shell变量和参数
shell变量和参数
48 1
|
10月前
|
开发者
如何优雅的起个变量名?
如何优雅的起个变量名?
|
存储 Shell
Shell 变量使用(环境变量、预定义变量、位置变量、自定义变量的区别)
Shell 变量使用(环境变量、预定义变量、位置变量、自定义变量的区别)
116 0
|
Shell
Shell 预定义变量 ($0、$$、$?、$#、$* 含义)
Shell 预定义变量 ($0、$$、$?、$#、$* 含义)
449 0
|
Shell 索引
shell脚本变量详解(自定义变量、环境变量、变量赋值、变量运算、变量内容替换)
shell变量 shell变量是指用一个特定的字符串去表示不固定的内容 1.变量的类型 1.1自定义变量 一般情况下不怎么使用环境变量,如果需要在其他文件中引入某个文件的变量则在脚本最开始的位置使用source 或者. 执行下该脚本即可
2521 0
shell脚本变量详解(自定义变量、环境变量、变量赋值、变量运算、变量内容替换)
|
PHP 开发者
预定义变量| 学习笔记
快速学习预定义变量。
131 0