放在/lib和/usr/lib和/usr/local/lib里的库直接用-l参数就能链接了。 但如果库文件没放在这三个目录里,而是放在其他目录里,这时我们只用-l参数的话,链接还是会出错,出错信息大概是:“/usr/bin/ld: cannot find -lxxx”,也就是链接程序ld在那3个目录里找不到libxxx.so,这时另外一个参数-L就派上用场了,...
标志要生成静态库 3、其他选项:-o:指定要生成的目标文件的文件名 -W:这个参数表示显示编译器所发出的警告信息 -Wall:表示要显示所有的警告信息 --version:显示编译器的版本及相关信息 --help:显示一个编译器支持的选项,不同版本的选项也可能有差异 -v:查看编译器执行过程中编译和链接命令实际细节 ...
3. gcc -c source_file.c -c,只执行到编译,输出目标文件。 4. gcc (-E/S/c/) source_file.c -o output_filename -o, 指定输出文件名,可以配合以上三种标签使用。 -o 参数可以被省略。这种情况下编译器将使用以下默认名称输出: -E:预编译结果将被输出到标准输出端口(通常是显示器) -S:生成名为sour...
gcc的 -Wl和-rpath参数 /usr/local/lib/和/usr/local/lib64/不在标准路径之列 ldconfig作用是在ld.so.conf和默认路径(/lib/、/usr/lib/)中所列出目录下搜索动态库; 编译时,ld链接器指定链接什么库,编译程序的最后一步是运行ld; 程序运行时,ld.so动态连接器,根据指定的路径加载库; 缓存文件/etc/ld.so....
1. -Werror 将警告视为错误。使用该参数可以将编译过程中的警告信息视为错误,编译过程将被中断。 2. -std=<standard> 指定所使用的语言标准。GCC支持多个语言标准,例如-std=c11表示使用C11标准。 3. -march=<arch> 指定目标处理器架构。使用该参数可以告诉编译器生成特定架构的机器代码。 4. -pthread 启用对...
用数学库时要有 -lm -O2 -- 优化. 可以忽略 -w -- 可以忽略
该参数含义为:代码中存在溢出并已经考虑,编译器不要对可能溢出的情况进行优化。 例如这段代码,我们可能由于编写失误,认为该函数将永远返回 1。在不带 fwrapv 的情况下,编译器将为我们默认规避掉这种失误,将代码优化为直接返回 1. 而带fwrapv 的情况下,明确告知编译器我们已经考虑了该情况,请不要进行该优化。则编...
这个是gcc的参数,表示编译器将后面的参数传递给链接器ld。请注意此处的W是大写的。 -rpath: 使用man ld命令查看手册,找到了-rpath的讲解:运行可执行文件时路径还有效(链接器已经将库的路径包含在可执行文件中了) -rpath-link: 运行可执行文件时指定的路径就不再有效(链接器没有包含进可...
-w:忽略所有警告 -shared:指定生成动态链接库。 -static:指定生成静态链接库。 -fPIC:表示编译为位置独立的代码,用于编译共享库。目标文件需要创建成位置无关码,概念上就是在可执行程序装载它们的时候,它们可以放在可执行程序的内存里的任何地方。 -l参数和-L参数 ...