问题标签 [ldflags]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 您可以在命令行上使用 visual-c++ 静态链接特定库吗?
更具体地说,我在 MingW 环境中使用了 visual-c++。我有一个这样定义 LDFLAGS 的生成文件:
如果我以这种方式构建程序,则需要将 libtcmalloc_minimal.dll 与程序一起分发。
我假设这是否是 GCC 或我使用的类似-static
,但该标志不被 visual-c++ 识别。有没有办法强制这个库静态实现?
go - 如何在golang中使用LDFLAGS的相对路径
我正在尝试构建一个使用静态库(.a 文件)的 golang 程序
我的项目的目录结构如下
test.go 中 cgo 的标志如下
当我为 LDFLAGS -L 使用绝对路径时,它可以正常工作,但是当我将路径更改为相对路径时,例如
然后运行命令
它向我返回一个错误,并说“找不到-ltest”
我的问题是如何在 LDFLAGS 中使用相对路径?,这样我就可以在任何路径中构建项目。
linux - ARM 的 openssh 交叉编译
我正在尝试为 ARM 交叉编译 openssh。我已经成功安装了 zlib 和 openssl。我将openssh包配置如下:
现在,当我尝试实现它时,出现以下错误:
arm-linux-gnueabi-ld -o ssh ssh.o readconf.o clientloop.o sshtty.o sshconnect.o sshconnect1.o sshconnect2.o mux.o roaming_common.o roaming_client.o -L。-Lopenbsd-compat/ -L/usr/opensslarm/lib -L/usr/zlibArm/lib -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack -shared-fstack-protector-all -lssh -lopenbsd-compat -lcrypto -ldl -lutil -lz -lnsl -lresolv arm-linux-gnueabi-ld:无法识别的选项 '-Wl,-z,relro'
我尝试搜索相同的内容,但无法了解错误是什么。我想过修改makefile中的LDFLAGS,但也没有用。我的 LDFLAGS 线看起来像:
可能的解决方案是什么?
mysql - 在 Autoconf M4 脚本中确定目标架构
我目前正在使用一个需要构建 i686 和 x86_64 库,在同一系统上构建和安装它们的系统 - 这是一个遗留项目,它混合了通常以 64 位运行的较新的 ABI 不可知代码,因为它可以使用额外的内存,以及一些在为 64 构建时会中断的旧代码。
对于 99% 的链接库,这可以正常工作;在 autoconf、rpm-build 和 pkg_config 之间,它可以毫无问题地找到正确的库。不幸的是,有一个主要的例外——MySQL。他们没有提供 pkg_config 脚本,而是拥有自己的自定义 mysql_config 脚本,并且它不尊重目标 ABI - 它只报告最后安装的值。
因此,虽然我们得到了移植到 64 位上正常运行的最后一个代码,但我试图通过编辑 Autoconf MySQL 配置脚本(官方 GNU 脚本,ax_lib_mysql.m4)来后处理报告的 CFLAGS 和LDFLAGS 取决于目标平台。这就是问题的症结所在——Autoconf M4 中是否有一种很好的方法来检测您是在为 32 位还是 64 位目标构建?确切的 ABI 无关紧要——主要是知道我是否需要链接到 /usr/lib 或 /usr/lib64。
很抱歉为一个句子的问题写小说,但我在网上找到了很多地方,人们问如何做到这一点,但从未得到答案,因为每个人都忙着告诉他们他们不应该这样做,因为它会使构建过程更加脆弱,所以我试图设置一点。我知道这是一个可怕的 hack(非常欢迎使用替代方法!),但我需要一些方法来解决这个问题,以在过渡期间保持系统构建。
ldflags - CFLAGS 和 LDFLAGS 与 CPATH 和 LIBRARY_PATH
在这个线程中
有人说 CFLAGS 和 LDFLAGS 不适用于每个配置脚本。为什么?我想对此有更多解释,而不仅仅是声明;)在什么情况下有效,在什么情况下无效?原因是什么?
他(接受的答案)还提到您应该改用 CPATH 和 LIBRARY_PATH 。CFLAGS 和 CPATH 有什么区别?同样,LDFLAGS 和 LIBRARY_PATH 有什么区别?
最后一个问题:当我使用 LDFLAGS = 不管时,我不会覆盖以前可能由开发人员自己制定的 LDFLAGS 定义吗?语法不应该类似于 ./configure LDFLAGS+=/myPath 吗?
cmake - 获取通过命令 add_definitions() 和 add_compile_options() 设置的 C/CXX FLAGS
在我的CMakeLists.txt
中,全局 C 和 CXX 标志是使用命令add_definitions()
和
add_compile_options 设置的。
多次尝试检索 C/CXX 标志:
${CMAKE_C_FLAGS}
并且${CMAKE_CXX_FLAGS}
是空的${CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE}}
是原始的默认 CMake 值
(例如-g
forCMAKE_C_FLAGS_DEBUG
)${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}}
和上面一样get_cmake_property(def COMPILE_DEFINITIONS)
是NOTFOUND
get_cmake_property(opt COMPILE_OPTIONS)
也是NOTFOUND
我想将我的自定义 C/CXX 标志传递给基于以下内容的外部项目./configure
:
(1)如何获取add_definitions()和add_compile_options设置的编译标志?
注意:我使用 CMake 版本 3.3.2
在写这个问题时,我意识到我想知道另一个问题:
我使用ccache
但./configure
脚本看不到我的环境变量CC
,CXX
当我这样设置它们时:
(2)以上这些 CMake 语句是否正确?
哎呀我又问了一个问题:
我从同一个变量中检索LDFLAGS
and 。
(3)是否需要设置另一个 CMake 变量?ARFLAGS
${CMAKE_STATIC_LINKER_FLAGS}
ARFLAGS
c++ - Qt pro 文件中的 LDFLAGS
我有一个 Qt 项目,我正在使用 GCC 和 MinGW 为 Ubuntu 和 Windows 编译。
我需要通过添加以下 LDFLAGS 来强化它:
- 堆栈执行保护:
LDFLAGS="-z noexecstack"
- 数据迁移和保护 (RELRO):
LDLFAGS="-z relro -z now"
问题是这可以用 .pro 文件完成吗?怎么做?我发现在项目文件中添加 LFLAGS 和 CFLAGS 很容易,但找不到 LDFLAGS 的任何内容。甚至输出 Makefiles 似乎也没有定义任何 LDFLAGS。
经过长时间的谷歌搜索,我发现的一种方法是添加QMAKE_CFLAGS_RELEASE += "--noexecstack"
.pro 文件,但我不相信这是正确的方法。
在上面的行之后,生成的 Makefile 如下所示:
noexecstack 出现在CLFAGS
列表中,但不确定是否可以。CFLAGS
不一样LDFLAGS
。它似乎也没有验证命令,因为--thisdoesntexist
当我尝试时似乎也通过了。
先感谢您。
编辑:
根据 Gwen 的回答,我尝试添加QMAKE_LFLAGS += "-z noexecstack -z relro -z now"
,但这会从 ld.exe 产生错误:
error: unrecognized option '-z'
编辑2:
工具版本:
go - Go lang 编译器使用 ldflags 导致(未知)错误
我正在尝试为 WD My Cloud Ex2 编译 Syncthing。这是一个 arm 架构,它适用于 64kb 页面文件,因此在编译时,必须有一个标志(“-R 65536”)。
编译时出现以下错误
不幸的是,谷歌根本没有关于此错误消息的任何结果。我可以对此消息做些什么?
android-studio - build.gradle中的ldFlags('-c')是什么意思?
请帮助我理解 Android Studio 中 build.gradle 中的 ldFlags('-c') 是什么意思?
eclipse - GNU 链接器标记 Windows 上的评估
我正在按照本教程在 Kinetis KDS(Eclipse CDT,Windows 10)上添加一个自动构建版本控制系统。
该示例使用这样的 Linux shell 命令计算表达式
这显然不适用于 Windows。
我尝试了使用 type 而不是 cat 的各种组合,但没有一个有效。
将符号定义为文件内容的最快方法是什么?