草庐IT

make_links_absolute

全部标签

linux - 是否可以在 make 文件中使用从 bash 脚本导出的变量?

我相信可以在make文件中使用环境变量的值。因为我是bash和make的新手,所以很难弄清楚如何做。我尝试了以下方法,但没有成功。在Bash中TEST_VAR=1exportTEST_VAR在生成文件中ifeq($(TEST_VAR),1)COMMON_OBJECTS+=Test1.oendif但它不编译Test1.cpp。我的make文件只包含这些行,我将COMMON_OBJECTS添加到另一个文件中定义的另一个变量。如果我评论这个ifeq条件Test1正在编译。但我正在寻找一种有条件地执行此操作的方法。我在这里缺少什么? 最佳答案

c++ - 如何停止 make -jN 消耗太多内存?

我有一个构建,如果我使用make-j2,它会在20分钟内完成。如果我使用make-j3,它会在15分钟内完成。然而,有时使用make-j3编译器会崩溃,因为使用了太多的系统内存。有没有办法告诉编译器在内存不足时限制其实例以防止这种情况发生? 最佳答案 GNUparallel可用于根据大量条件启动任务,其中之一是剩余足够的可用内存。 关于c++-如何停止make-jN消耗太多内存?,我们在StackOverflow上找到一个类似的问题: https://stac

linux - 创建与其他文件相关的符号链接(symbolic link)

我知道我的主题有点困惑,但这是我想做的。我有一个文件,我想创建一个指向我的家~/bin的链接,但是当我在运行该文件(shell脚本)时创建一个指向该文件的链接时,该文件需要在其目录中有另一个文件。因此,它无法运行,因为它找不到其他文件。我能做些什么?谢谢 最佳答案 好吧,你有两个简单的解决方案。编辑shell脚本以指向文件的绝对路径,而不仅仅是基本名称。./path/to/file.shVS文件.sh所以像这样的东西应该可以满足您的需求。sed-i's|file.sh|./path/to/file.sh|g'~/bin/script

linux - 在 qmake (5.0) 生成的 Makefile 中设置 LINK 变量

我正在使用qmake生成Makefile。在我的规范文件中,我这样覆盖了CXX和CC:QMAKE_CC=/home/foo/gcc-4.7.2/bin/gccQMAKE_CXX=/home/foo/gcc-4.7.2/bin/g++现在生成的Makefile使用这些版本。但是在生成的makefile中有一个名为LINK的变量,它指向g++。不是/home/foo/gcc-4.7.2/bin/g++。当从所有生成的目标文件编译可执行文件时,这会导致我的构建在最后一步失败。如何让qmake在生成的Makefile中将LINK设置为/home/foo/gcc-4.7.2/bin/g++?目前

c++ - 在 linux 上将共享库与未解析的符号链接(symbolic link)

我有以下三个项目:Host:导出全局变量(声明为extern)的可执行文件Plugin:由Host加载并引用全局变量的运行时库工具:链接到插件并使用它的某些功能的可执行文件。它不以任何方式引用全局变量。现在,如果我在Windows上构建它,一切都很好。Tool只会链接到Plugin的导出库,不会尝试解析全局变量。在Linux上我遇到了一个问题。Tool尝试链接到Plugin.so库(因为没有导出库)并将在Host中找到对全局变量的引用>它无法解决。如何解决这个问题?编辑:以下是使用CMake问题的可编译示例。CMakeLists.txtSET(CMAKE_RUNTIME_OUTPUT_

c - GNU-make 4.运行 "Loading Dynamic Objects"的例子

ThelatestversionofGNU-Makehttp://www.gnu.org/software/make/providesmanyadvancedcapabilities,includingmanyusefulfunctions.(...)Onsystemswhichsupportdynamicallyloadableobjects,youcanwriteyourownextensioninanylanguage(whichcanbecompiledintosuchanobject)andloadittoprovideextendedcapabilities...http:

linux - "relocation R_X86_64_32S against `.bss ' can not be used when making a shared object”

我在这方面绝对是新手,但在类里面,老师给了我们他写的文件,让我们运行它,然后它工作得很好,但是当我尝试在家里做它时(我在VirtualBox上使用Linux)并使用:nasm-felf64hello.asm-ohello.ogcchello.o-ohello我收到错误“创建共享库时不能使用针对`.bss'的重定位R_X86_64_32S;使用-fPIC重新编译”。有人可以解释一下如何使它工作吗?globalmainexternprintfsection.datanapis:db'Helloworld!-poraz%ld',10,0liczba_iteracji:equ5section.

linux - 在 Linux 中,符号链接(symbolic link)的值可以比 PATH_MAX 长吗?

每个幼儿园的child都知道,Linux中的文件路径不能超过PATH_MAX个字符。但在我的系统上进行实验,命令ln-s$(foriin{0..1024};doprintfdir/../;done)foobarfoobar1失败并显示错误消息Filenametoolong。我不太明白为什么。这里没有长文件名,只有文件foobar1的预期内容很长。甚至还没有人试图遍历符号链接(symboliclink)的内容以到达目标。当然,我可以拥有一个内容比PATH_MAX大得多的文件。另一方面,像这样的命令foriin{0..4096};doln-s$i$(expr$i+1);done成功了。只有

linux - 运行并行 make 时出错

考虑以下品牌:all:aba:echoaexit1b:echobstartsleep1echobend当以make-j2运行它时,我收到以下输出:echoaechobstartaexit1bstartsleep1make:***[a]Error1make:***Waitingforunfinishedjobs....echobendbend我们有一个很大的make文件,很容易错过错误,因为在执行结束时没有错误消息。有没有办法让错误消息也出现在make执行的结尾?更新:查看我可能的solution如何从make中检查make退出状态。 最佳答案

linux - 如何删除警告 : link. res 包含输出部分;你忘了-T吗?

我正在使用fpc编译器,我想删除此警告。我已经阅读了fpc的选项,但我找不到该怎么做。这可能吗?当我运行命令时出现:fpcfoo.pas输出:TargetOS:Linuxfori386Compilingfoo.pasLinkingp2/usr/bin/ld:warning:link.rescontainsoutputsections;didyouforget-T?79linescompiled,0.1sec 最佳答案 这是某些LD版本中的错误。暂时忽略它,或者查看您的发行版是否有针对您的LD的更新。(包binutils)http:/