问题标签 [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.

0 投票
1 回答
355 浏览

c++ - 您可以在命令行上使用 visual-c++ 静态链接特定库吗?

更具体地说,我在 MingW 环境中使用了 visual-c++。我有一个这样定义 LDFLAGS 的生成文件:

如果我以这种方式构建程序,则需要将 libtcmalloc_minimal.dll 与程序一起分发。

我假设这是否是 GCC 或我使用的类似-static,但该标志不被 visual-c++ 识别。有没有办法强制这个库静态实现?

0 投票
2 回答
14285 浏览

go - 如何在golang中使用LDFLAGS的相对路径

我正在尝试构建一个使用静态库(.a 文件)的 golang 程序

我的项目的目录结构如下

test.go 中 cgo 的标志如下

当我为 LDFLAGS -L 使用绝对路径时,它可以正常工作,但是当我将路径更改为相对路径时,例如

然后运行命令

它向我返回一个错误,并说“找不到-ltest”

我的问题是如何在 LDFLAGS 中使用相对路径?,这样我就可以在任何路径中构建项目。

0 投票
0 回答
2063 浏览

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 线看起来像:

可能的解决方案是什么?

0 投票
1 回答
395 浏览

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(非常欢迎使用替代方法!),但我需要一些方法来解决这个问题,以在过渡期间保持系统构建。

0 投票
1 回答
4135 浏览

ldflags - CFLAGS 和 LDFLAGS 与 CPATH 和 LIBRARY_PATH

在这个线程中

https://unix.stackexchange.com/questions/149359/what-is-the-correct-syntax-to-add-cflags-and-ldflags-to-configure

有人说 CFLAGS 和 LDFLAGS 不适用于每个配置脚本。为什么?我想对此有更多解释,而不仅仅是声明;)在什么情况下有效,在什么情况下无效?原因是什么?

他(接受的答案)还提到您应该改用 CPATH 和 LIBRARY_PATH 。CFLAGS 和 CPATH 有什么区别?同样,LDFLAGS 和 LIBRARY_PATH 有什么区别?

最后一个问题:当我使用 LDFLAGS = 不管时,我不会覆盖以前可能由开发人员自己制定的 LDFLAGS 定义吗?语法不应该类似于 ./configure LDFLAGS+=/myPath 吗?

0 投票
1 回答
3341 浏览

cmake - 获取通过命令 add_definitions() 和 add_compile_options() 设置的 C/CXX FLAGS

在我的CMakeLists.txt中,全局 C 和 CXX 标志是使用命令add_definitions()add_compile_options 设置的

多次尝试检索 C/CXX 标志:

  1. ${CMAKE_C_FLAGS}并且${CMAKE_CXX_FLAGS}是空的
  2. ${CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE}}是原始的默认 CMake 值
    (例如-gfor CMAKE_C_FLAGS_DEBUG
  3. ${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}}和上面一样
  4. get_cmake_property(def COMPILE_DEFINITIONS)NOTFOUND
  5. get_cmake_property(opt COMPILE_OPTIONS)也是NOTFOUND

我想将我的自定义 C/CXX 标志传递给基于以下内容的外部项目./configure

(1)如何获取add_definitions()add_compile_options设置的编译标志?

注意:我使用 CMake 版本 3.3.2


在写这个问题时,我意识到我想知道另一个问题:

我使用ccache./configure脚本看不到我的环境变量CCCXX当我这样设置它们时:

(2)以上这些 CMake 语句是否正确?


哎呀我又问了一个问题:

我从同一个变量中检索LDFLAGSand 。 (3)是否需要设置另一个 CMake 变量ARFLAGS${CMAKE_STATIC_LINKER_FLAGS}
ARFLAGS

0 投票
1 回答
4642 浏览

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:

工具版本:

0 投票
0 回答
95 浏览

go - Go lang 编译器使用 ldflags 导致(未知)错误

我正在尝试为 WD My Cloud Ex2 编译 Syncthing。这是一个 arm 架构,它适用于 64kb 页面文件,因此在编译时,必须有一个标志(“-R 65536”)。

编译时出现以下错误

不幸的是,谷歌根本没有关于此错误消息的任何结果。我可以对此消息做些什么?

0 投票
1 回答
952 浏览

android-studio - build.gradle中的ldFlags('-c')是什么意思?

请帮助我理解 Android Studio 中 build.gradle 中的 ldFlags('-c') 是什么意思?

参考示例:https ://github.com/googlesamples/android-ndk/blob/a498a7809cb7c9ec576b95e797edc4e64777ea00/MoreTeapots/nativeactivity/build.gradle

0 投票
1 回答
69 浏览

eclipse - GNU 链接器标记 Windows 上的评估

我正在按照教程在 Kinetis KDS(Eclipse CDT,Windows 10)上添加一个自动构建版本控制系统。

该示例使用这样的 Linux shell 命令计算表达式

这显然不适用于 Windows。

我尝试了使用 type 而不是 cat 的各种组合,但没有一个有效。

将符号定义为文件内容的最快方法是什么?