草庐IT

multiple-makefiles

全部标签

linux - Makefile 变量替换显然没有完成,即使 := is used in declaration

我有一个主内核模块,其他内核模块与之通信。我已经构建了这样的模块(概念上):mainmodule/|\drivers/||\driver1|\driver2\driver3因为这些是内核模块,我需要像这样编译它们:make-C/lib/modules/$(shelluname-r)/buildM=$(shellpwd)modules但是,由于可以从以前的目录调用驱动程序的Makefile,因此我需要在调用其他make(linux的make)之前执行$(shellpwd)。所以Makefile现在看起来像这样:CURRENT_DIR:=$(shellpwd).PHONY:allall:$

c - Makefile 说缺少运算符

我正在尝试运行一个同时编译这些“C”程序的生成文件。CC=gccCFLAGS=-I.DEPS=queue.hall:\threadssthreadss:thread.oqueueImp.o$(CC)thread.oqueueImp.o-othreadssthread.o:thread.c$(CC)$(CFLAGS)threads.cthread.o:queueImp.c$(CC)$(CFLAGS)queueImp.cclean:rm-rf*othreadss但是返回以下错误:Makefile:8:***missingseparator.Stop.请帮我解决这个问题。我使用的是unix环

linux - F#、Linux 和 makefile

我打算将F#程序作为二进制文件和源代码分发,以便用户可以根据需要选择重新编译它。在Windows上,我了解如何执行此操作:提供.fsproj和.sln文件,VisualStudio和MSBuild都可以理解。在Linux上,C程序的传统解决方案是makefile。这取决于gcc是否可以直接使用,它一直都是。F#编译器可以安装在Linux上并在Mono下工作,所以目前为止还不错。但是,据我所知,它不会创建fsc运行编译器的场景,而是命令mono...path.../fsc.exe。这也很好,除了我不知道路径是什么。所以在我的例子中运行编译器的完整命令可以是除了我不确定fsc.exe在用户

linux - 有充分的理由不利用 makefile 顶部的 '#!/bin/make -f' 来提供可执行的 makefile 吗?

主要是为了娱乐,我在我的$HOME/bin目录中创建了一个名为rebuild.mk的makefile,并使其可执行,文件的第一行是:#!/bin/make-f##Commentsonwhatthemakefileisfor...all:${SCRIPTS}${LINKS}......我现在可以输入:rebuild.mk这会导致make执行。除此之外,没有永久利用它的原因是什么:makefile绑定(bind)到一个目录,所以它确实不适合放在我的主bin目录中。有没有人见过这种被利用的把戏?收集一些评论,并提供更多背景信息。NormanRamsey报告说Debian中使用了这种技术;这很

在深度嵌套的源/makefile 中正确包含 (POSIX) 库

长话短说:我们有一个大型SDK,其中包含约1Gb的毛茸茸的代码,这些代码由ElbonianCodeSlaves破解在一起,由RPC、共享内存、互斥/信号量和spit的颤动网格拼接在一起。它是在Linux机器上为嵌入式SoC目标编译的。作为改进部分代码的一部分,我想将POSIX信号量添加到其中一个源中,它包含在一些RPC例程中。但是,只需编写一些有效的代码并坚持#include在顶部当然不足以启用编译。所需要的是makefile中的特殊标志,具体取决于您阅读的内容,它可以是任何/所有:-pthread-lpthread-lpthreads-lrt-rt我没有太多编写makefile的经验

linux - 如何在linux中使用我自己的动态库(Makefile)

我有一个专为linux设计的c++项目(g++/rawMakefile),我过去常常静态链接所有能正常工作多年的东西。现在我想构建静态和动态链接的二进制文件。以下命令在我的Makefile中用于构建动态库(比如libtest):$(CXX)-shared-Wl,-soname,libtest.so.1-olibtest.so.1.0.0$(LIBTEST_OBJS)输出是libtest.so.1.0.0,其名称为libtest.so.1我至少找到了一个符号链接(symboliclink)libtest.so-->需要libtest.so.1.0.0来链接实际使用上面生成的libtest

linux - 具有相对路径的 Makefile?

我在GentooLinux上的Makefile有问题。这是我的文件夹层次结构:Development->GLTools->include->src->Triangle->triangle.cpp->Makefile和我的Makefile:MAIN=triangleSRCPATH=./SHAREDPATH=../GLTools/src/SHAREDINCPATH=../GLTools/include/LIBDIRS=-L/usr/local/libINCDIRS=-I/usr/include-I/usr/local/include-I/usr/include/GL\-I$(SHAREDI

c++ - Makefile - 找不到共享库

我有一个C++Linux项目的Makefile:MODE?=dbgDIR=../../../../../somdir/$(MODE)SRC_FILES=a.cppb.cppH_FILES=a.hLDFLAGS+=-L$(DIR)/lib/linux'-Wl,-R$$ORIGIN'CPPFLAGS=-I$(DIR)/includeLIBRARIES=-lsomesoifeq(rel,$(MODE))CFLAGS=-Wall-g-DNDEBUGelseCFLAGS=-Wall-ansi-pedantic-Wconversion-g-DDEBUG-D_DEBUGendifsample:$(S

Linux 内核 makefile cscope 目标

当我通过发出makecscope生成Linux内核cscope数据库时,我得到了数据库文件以及具有相对路径的文件列表。这对我来说是个问题,因为稍后当我从内核以外的任何目录将外部内核的数据库附加到vim编辑器中时,我可以轻松地搜索特定符号BUT我无法打开包含该符号的文件.我已经编写了下一个bash脚本#!/bin/bashSNAME="$0"SNAME=${SNAME##*/}functionusage(){echoGenerateLinuxkernelcscopedatabaseecho"Usage:$SNAME[PATH]"echo-n"Youmustprovidethisscrip

linux - 如何在 Makefile 中找到基础架构?

无论我是在32位还是64位机器上运行,我都想在Makefile中找到。是否有任何可以从Makefile中简单访问的宏或环境变量?我在网上找到了这个相关的答案:LBITS:=$(shellgetconfLONG_BIT)ifeq($(LBITS),64)#do64bitstuffhere,likesetsomeCFLAGSelse#do32bitstuffhereendif但是,我怀疑所有系统中的getconf工具是否可用。 最佳答案 tl;dr;如果您只需要以可移植的方式在C中获取long类型的位数,那么可以使用getconfLON