Linux下C语言编译的时候什么样的函数会用到-L或-l指定路径或名?

Linux下C语言编译的时候什么样的函数会用到-L或-l指定路径或名?,第1张

math.h的函数不在libc.a(静态链接)或者libc.so(动态链接)里面,

它在libm.a或者libm.so里面。

比如pow函数,你man 3 pow,它有一句“Link with -lm”的,其他没提示的标准c函数是-lc的,不过通常是不用加-lc的,因为gcc默认会自己帮你添加,这些都搜索路径写在gcc程序的内部。

如果你自己修改然后重新编译一个gcc,可以定义其他搜索路径,当然不推荐这样做。

gcc -E source_file.c

-E,只执行到预编译。直接输出预编译结果。

gcc -S source_file.c

-S,只执行到源代码到汇编代码的转换,输出汇编代码。

gcc -c source_file.c

-c,只执行到编译,输出目标文件

gcc (-E/S/c/) source_file.c -o output_filename

-o, 指定输出文件名,可以配合以上三种标签使用。

-o 参数可以被省略。这种情况下编译器将使用以下默认名称输出:

-E:预编译结果将被输出到标准输出端口(通常是显示器)

-S:生成名为source_file.s的汇编代码

-c:生成名为source_file.o的目标文件。

无标签情况:生成名为a.out的可执行文件。

gcc -g source_file.c

-g,生成供调试用的可执行文件,可以在gdb中运行。由于文件中包含了调试信息因此运行效率很低,且文件也大不少。

这里可以用strip命令重新将文件中debug信息删除。这是会发现生成的文件甚至比正常编译的输出更小了,这是因为strip把原先正常编译中的一些额外信息(如函数名之类)也删除了。用法为 strip a.out

gcc -s source_file.c

-s, 直接生成与运用strip同样效果的可执行文件(删除了所有符号信息)。

gcc -O source_file.c

-O(大写的字母O),编译器对代码进行自动优化编译,输出效率更高的可执行文件。

-O 后面还可以跟上数字指定优化级别,如:

gcc -O2 source_file.c

数字越大,越加优化。但是通常情况下,自动的东西都不是太聪明,太大的优化级别可能会使生成的文件产生一系列的bug。一般可选择2;3会有一定风险。

gcc -Wall source_file.c

-W,在编译中开启一些额外的警告(warning)信息。-Wall,将所有的警告信息全开。

gcc source_file.c -L/path/to/lib -lxxx -I/path/to/include

-l, 指定所使用到的函数库,本例中链接器会尝试链接名为libxxx.a的函数库。

-L,指定函数库所在的文件夹,本例中链接器会尝试搜索/path/to/lib文件夹。

-I, 指定头文件所在的文件夹,本例中预编译器会尝试搜索/path/to/include文件夹。

ls --help man lsinfo coreutils 'ls invocation'用法:ls [选项]... [文件]...列出 FILE 的信息(默认为当前目录)。如果不指定-cftuvSUX 或--sort 选项,则根据字母大小排序。长选项必须使用的参数对于短选项时也是必需使用的。 -a, --all 不隐藏任何以. 开始的项目 -A, --almost-all 列出除. 及.. 以外的任何项目 --author 与-l 同时使用时列出每个文件的作者 -b, --escape 以八进制溢出序列表示不可打印的字符 --block-size=大小 块以指定大小的字节为单位。例如 --block-size=M 以 1,048,576 字节为单位 显示大小。参看SIZE 格式。 -B, --ignore-backups 不列出任何以"~"字符结束的项目 -c 配合-lt:根据ctime 排序并显示ctime(文件 状态最后更改的时间) 配合-l:显示ctime 但根据名称排序 其他情况:按ctime 排序 -C 每栏由上至下列出项目 --color[=WHEN] 控制是否使用色彩分辨文件。WHEN 可以是 "never"(默认)、"always"或"auto"其中之一 -d, --directory 当遇到目录时列出目录本身而非目录内的文件 -D, --dired 产生适合Emacs 的dired 模式使用的结果 -f 不进行排序,-aU 选项生效,-lst 选项失效 -F, --classify 加上文件类型的指示符号(*/=@| 其中一个) --format=关键字 交错-x,逗号分隔-m,水平-x,长-l, 单栏-1,详细-l,垂直-C --full-time 即-l --time-style=full-iso -g 类似-l,但不列出所有者 --group-directories-first 在文件前分组目录。此选项可与--sort 一起使用, 但是一旦使用--sort=none (-U)将禁用分组 -G, --no-group 以一个长列表的形式,不输出组名 -h, --human-readable 与-l 一起,以易于阅读的格式输出文件大小 (例如 1K 234M 2G) --si 同上面类似,但是使用1000 为基底而非1024 -H, --dereference-command-line 跟随命令行列出的符号链接 --dereference-command-line-symlink-to-dir 跟随命令行列出的目录的符号链接 --hide=PATTERN 隐藏符合PATTERN 模式的项目 (-a 或 -A 将覆盖此选项) --indicator-style=方式 指定在每个项目名称后加上指示符号方式: none (默认),classify (-F),file-type (-p) -i, --inode 显示每个文件的inode 号 -I, --ignore=PATTERN 不显示任何符合指定shell PATTERN 的项目 -k 即--block-size=1K -l 使用较长格式列出信息 -L, --dereference 当显示符号链接的文件信息时,显示符号链接所指示 的对象而并非符号链接本身的信息 -m 所有项目以逗号分隔,并填满整行行宽 -n, --numeric-uid-gid 类似 -l,但列出UID 及GID 号 -N, --literal 输出未经处理的项目名称 (如不特别处理控制字符) -o 类似 -l,但不列出有关组的信息 -p, --indicator-style=slash 对目录加上表示符号"/" -q, --hide-control-chars 以"?"字符代替无法打印的字符 --show-control-chars 直接显示无法打印的字符 (这是默认方式,除非调用 的程序名称是"ls"而且是在终端输出结果) -Q, --quote-name 将条目名称括上双引号 --quoting-style=方式 使用指定的quoting 方式显示条目的名称: literal、locale、shell、shell-always、c、escape -r, --reverse 逆序排列 -R, --recursive 递归显示子目录 -s, --size 以块数形式显示每个文件分配的尺寸 -S 根据文件大小排序 --sort=WORD 以下是可选用的WORD 和它们代表的相应选项: extension -X status -c none -U time -t size -S atime-u time -t access -u version -v use -u --time=WORD 和-l 同时使用时显示WORD 所代表的时间而非修改时 间:atime、access、use、ctime 或status;加上 --sort=time 选项时会以指定时间作为排序关键字 --time-style=STYLE 和-l 同时使用时根据STYLE 代表的格式显示时间: full-iso、iso、locale、posix-iso、+FORMAT。 FORMAT 即是"date"所用的时间格式;如果FORMAT 是FORMAT1<换行>FORMAT2,FORMAT1 适用于较旧 的文件而FORMAT2 适用于较新的文件;如果STYLE 以"posix-"开头,则STYLE 仅在POSIX 语系之外 生效。 -t 根据修改时间排序 -T, --tabsize=宽度 指定制表符(Tab)的宽度,而非8 个字符 -t 按修改时间排序 -T, --tabsize=COLS 指定制表符(Tab)的宽度,而非8个字符 -u 同-lt 一起使用:按照访问时间排序并显示 同-l一起使用:显示访问时间并按文件名排序 其他:按照访问时间排序 -U 不进行排序;按照目录顺序列出项目 -v 在文本中进行数字(版本)的自然排序 -w, --width=COLS 自行指定萤幕宽度而不使用目前的数值 -x 逐行列出项目而不是逐栏列出 -X 根据扩展名排序 -1 每行只列出一个文件 --help 显示此帮助信息并退出 --version 显示版本信息并退出SIZE 可以是一个可选的整数,后面跟着以下单位中的一个:KB 1000,K 1024,MB 1000*1000,M 1024*1024,还有 G、T、P、E、Z、Y。使用色彩来区分文件类型的功能已被禁用,默认设置和 --color=never 同时禁用了它。使用 --color=auto 选项,ls 只在标准输出被连至终端时才生成颜色代码。LS_COLORS 环境变量可改变此设置,可使用 dircolors 命令来设置。退出状态: 0 正常 1 一般问题 (例如:无法访问子文件夹) 2 严重问题 (例如:无法使用命令行参数)请向bug-coreutils@gnu.org 报告ls 的错误GNU coreutils 项目主页:<http://www.gnu.org/software/coreutils/>GNU 软件一般性帮助:<http://www.gnu.org/gethelp/>请向<http://translationproject.org/team/zh_CN.html>报告ls 的翻译错误要获取完整文档,请运行:info coreutils 'ls invocation'


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/6251719.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-19
下一篇 2023-03-19

发表评论

登录后才能评论

评论列表(0条)

保存