makefile中的CFLAGS与LDFLAGS

在configure时我们经常会遇到明明已经指令了目录但有时就是链接不了的情况,解决方法及原因如下(引用自http://www.cnblogs.com/taskiller/archive/2012/12/14/2817650.html)


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将会设置这个选项,链接时会有这个参数,编译出来的可执行程序的库文件搜索路径就得到扩展了。

转载于:https://www.cnblogs.com/traxex/archive/2013/04/02/5850899.html

CMake整理 file(GLOB SRC_LIST "src/*.cpp") # 这里file(GLOB ...)命令来查找src目录下所有扩展名为.cpp的文件,并将它们的名字存入SRC_LIST变量。aux_source_directory(. SRC_LIST) #这里 . 表示当前目录,SRC_LIST 是存放源文件列表的变量。SET(LIBRARY_OUTPUT_PATH ${TOP_DIR}/Lib/$${PLATFORM}) #####设置库生成路径。#########设置库属性 源文件和输出名字。 阅读详情

相关推荐

WSL基础环境配置方案

通过以上步骤,您已经在 Windows 的 WSL 环境中成功搭建了一个完整的基础开发环境,包含 Docker、Kubernetes、Helm、kubectl、yq、Git 等工具。这套环境特别适用于在国内使用阿里云镜像服务部署和管理 Tekton,提升了开发和运维的效率和稳定性。

落魄书生的职业学习生涯 8853

Makefile 文件 configure可执行文件 跟 CFLAGS 参数

在使用 configure 进行交叉编译的时候,要指定交叉编译工具链。同时可能要指定一些参数交叉编译的参数。 例如 常见的Makfile 文件 CC = arm-poky-linux-gnueabi-gcc OTHER_HEADERS = ../../mjpg_streamer.h ../../utils.h ../output.h ../input.h CFLAGS += -O1 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC CFLAGS += -march=ar

aningxiaoxixi的博客 4345

makefileconfigure的LDFLAG、CFLAG、LIBS用法

指定头文件(.h文件)的路径,如:CFLAGS=-I/usr/include -I/path/include。如果你的头文件不处于gcc默认的路径之中,就需要使用此参数指定。那么gcc默认的搜索头文件的路径是什么呢?gcc 等编译器会用到的一些优化参数,也可以在里面指定非默认路径的库文件的位置。用法:LDFLAGS=-L/usr/lib -L/path/to/your/lib”。参考:https://blog.csdn.net/qq_31567335/article/details/82470477。

xf807989的博客 1297

Cmake参数修改之CFLAGS和CXXFLAGS

修改cmake编译参数

qq_35985044的博客 1万+

Makefile中的CFLAGSLDFLAGS

本文深入探讨了C/C++项目开发中Makefile的核心工具CFLAGSLDFLAGS的作用、常见用法及高级技巧。CFLAGS用于控制编译器的行为,包括代码优化、调试支持、警告管理和路径设置等;LDFLAGS则用于控制链接器的行为,如库路径设置、库链接和内存布局等。文章详细介绍了这些变量的常用选项和高级用法,如架构特定优化、安全加固、静态分析集成等,并提供了典型项目配置、多配置管理和第三方库集成的实践案例。此外,文章还涵盖了跨平台处理、调试分析、常见错误解决方法,以及最佳实践总结。通过合理配置CFLA

Jiuri的博客 1941

Makefile选项 CFLAGS LDFLAGS

makefile内嵌隐含规则的命令中,所使用的变量都是预定义的变量。我们将这些变量称为“隐含变量”。这些变量允许对它进行修改:在Makefile中、通过命令行参数或者设置系统环境变量的方式来对它进行重定义。无论是用那种方式,只要make在运行时它的定义有效,make的隐含规则都会使用这些变量。 ​ GCC编译选项CFLAGS参数 选项 说明 -c 用于把源码文件编译成 .o ...

whatday的专栏 6427

Makefile 编译链接选项及CFLAGSLDFLAGS示例说明

最近看了makefile的手册之后,发现还是不知道怎么写makefile,而且就连看也看的是云里雾里,就我现在工作当中看到的一些makefile文件,只能看个大概的意思,一旦涉及到文件添加、静态库、动态库等增加、删除;文件搜索路径等的修改就没法下手了,因此必须对我比较关注的地方进行深度学习,知其然还要知其所以然,知道怎么从无到有写出来,而且别人的makefile还要知道怎么根据需求的变化进行修改。...

zhaoyun_zzz的专栏 6万+

Makefile学习(三)- CFLAGSLDFLAGS

摘要:Makefile中的CFLAGSLDFLAGS分别用于控制编译和链接阶段。CFLAGS包含编译参数如-I(头文件路径)、-Wall(警告)、-O2(优化)等;LDFLAGS包含链接参数如-L(库路径)、-l(链接库)等。二者分工明确:CFLAGS处理源文件到目标文件的编译过程,LDFLAGS处理目标文件到可执行文件的链接过程。通过合理设置这些参数,可以优化构建过程,控制编译警告级别,指定依赖库路径等。文章通过具体示例演示了这些参数的使用场景和效果差异。

qq_26226375的博客 1472

Makefilecflags参数和ldflags参数

GCC编译选项CFLAGS参数 选项 说明 -c 用于把源码文件编译成 .o 对象文件,不进行链接过程 -o 用于连接生成可执行文件,在其后可以指定输出文件的名称 -g 用于在生成的目标可执行文件中,添加调试信息,可以使用GDB进行调试 -Idir 用于把新目录添加到includ...

Robben.Han 4万+

CMake

CMAKE常用指令

weixin_41481284的博客 704

configure和编译选项的添加

configure和编译选项的添加 gdb的时候如果发现没有调试信息,添加编译选项如下: ./configure CFLAGS="-g" -g也可以显示源码信息。 下面为添加地址随机化: ./configure CFLAGS="-fsanitize=address" 如果是用c++编译的,则为: ./configure CFLAGS="-fno-stack-protector" CXXF...

Scarlett_geng的博客 1万+

CMake指定C++版本

现在使用CMake的项目越来越多,由于历史原因,编译C++代码时,往往需要指定C++的版本。这里记录CMake编译时指定C++版本的几种方法。

至虛極,守靜篤 5473

configure时添加cflag编译选项

CFLAGS="-O0" ./configure

NOHACKCC的专栏 1万+

CFLAGS详解

Makefile选项CFLAGS,LDFLAGS,LIBS CFLAGS 表示用于 C 编译器的选项, CXXFLAGS 表示用于 C++ 编译器的选项。 这两个变量实际上涵盖了编译和汇编两个步骤。 CFLAGS: 指定头文件(.h文件)的路径,如:CFLAGS=-I/usr/include -I/path/include。同样地,安装一个包时会在安装路径下建立

xinyuan510214的专栏 8万+

CFLAGS用法

CFLAGS 表示用于 C 编译器的选项, CXXFLAGS 表示用于 C++ 编译器的选项。 这两个变量实际上涵盖了编译和汇编两个步骤。 CFLAGS: 指定头文件(.h文件)的路径,如:CFLAGS=-I/usr/include -I/path/include。同样地,安装一个包时会在安装路径下建立一个include目录,当安装过程中出现问题时,试着把以前安装的包的include目录加入到该变量中来。 LDFLAGS :gcc 等编译器会用到的一些优化参数,也可以在里面指定库文件的位置。用法:LDFLA

qq_40309341的博客 6053

【IntelliJ IDEA】idea修改文件的file is read-only

今天碰到一个问题,不知怎么弄的,IDEA文件变成只读了,不能编辑修改。 如图文件的图标有这样的变化: 当我想要编辑修改这个文件的时候,出现下图所示的提示: 此处的弹框是问你“是否清除只读状态”,此时点击OK可以将这个文件的只读状态改为可编辑状态。 以上是第一种解决办法,简单,快速,方便,但有时候不会出现此弹框; 另一种清除只读状态的解决办法是:选中此文件 --> File ...

No8g攻城狮的博客 7万+

linux configure配置文件参数详解

转自:http://blog.chinaunix.net/uid-20568163-id-1632905.html Linux环境下的软件安装,并不是一件容易的事情;如果通过源代码编译后在安装,当然事情就更为复杂一些;现在安装各种软件的教程都非常普遍;但万变不 离其中,对基础知识的扎实掌握,安装各种软件的问题就迎刃而解了。Configure脚本配置工具就是基础之一,它是autoconf的工具的基

u011756766的博客 6514

CMake入门教程

CMake入门教程 参考文献:http://www.ibm.com/developerworks/cn/linux/l-cn-cmake/index.html 官方网址:http://www.cmake.org/ 下载网址:http://www.cmake.org/download/ 当前版本:3.1rc3 本文基于CMake 2.8版本编写。 CMake 是一个跨平台的,开源的构建系统...

好习惯成就伟大 1036

Cmake工具的简单使用

那么当我们点击Clion右上角的运行按钮时,不仅终端出会输出hello,world的运行结果,在cmake-build-debug这个文件夹中也会多出一部分内容,多出的这部分内容是构建的中间文件.我们创建一个include的目录,用来存储头文件,因为我们在写C++项目时,需要有一个习惯,就是在.h文件中定义类和函数,但是并不写函数体,而是在.cpp文件中来完成函数体的部分.必须有makefile文件才能执行make命令,然后就会生成一个可执行文件,这个可执行文件,就是一个简单项目的运行结果.

qq_52508038的博客 3945

18、项目运行调试全攻略

本文详细介绍了在IntelliJ IDEA中进行项目运行调试的完整流程,涵盖运行配置的创建管理、临时配置的使用保存、运行窗口的控制台操作及多程序并行运行的处理。同时,讲解了如何通过调试器定位和修复语法错误、运行时错误及逻辑错误,并结合ACME项目演示了第三方库Log4J的集成方法和命令行客户端的功能改进。文章还提供了调试流程图,帮助开发者系统掌握IDEA的强大调试功能,提升开发效率代码质量。

svm4gardener的博客 62

误删了照片,甚至对存储卡进行了格式化 都可以找到丢失的图片,并让您恢复它们 支持一键恢复或永久删除丢失的照片、视频、音乐、文档等

误删了照片,甚至对存储卡进行了格式化 都可以找到丢失的图片,并让您恢复它们 支持一键恢复或永久删除丢失的照片、视频、音乐、文档等。建议及早恢复数据有机会找回,覆盖就不能了。

上一篇: linux修改进程打开文件数限制
下一篇: mysql监听多个端口的两种方式
baijing8416
博客等级 码龄9年 0粉丝 0原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值