Articles of gnu make

将“Qt5UiTools”的安装前缀添加到CMAKE_PREFIX_PATH中

我正在使用cmake版本3.2.2,因为它是代码的要求我正在尝试构buildMikTex源代码,但得到不同的错误,我不知道在Ubuntu 14.04 LTS。 当我从源代码文件夹“miktex-2.9-2015-12-22”的目录中运行cmake -G "Unix Makefiles"命令时,出现以下错误: /usr/lib/x86_64-linux-gnu/cmake/Qt5/Qt5Config.cmake:26(find_package)处的CMake错误:无法find具有以下任一名称的“Qt5UiTools”提供的软件包configuration文件: Qt5UiToolsConfig.cmake qt5uitools-config.cmake 将“Qt5UiTools”的安装前缀添加到CMAKE_PREFIX_PATH或将“Qt5UiTools_DIR”设置为包含上述文件之一的目录。 如果“Qt5UiTools”提供了一个单独的开发包或SDK,请确保它已经安装。 调用堆栈(最近调用优先):CMakeLists.txt:466(find_package) – configuration不完整,发生错误!

在Makefile命令中设置variables

我在GNU makefile中遇到了一个愚蠢的问题。 我想定义两个目标来构buildac程序; 一个用debugging,另一个不用。 runNoDebug: setNoDeb objs runMe runDebug: setDeb objs runMe setNoDeb: {EXPORT} MyDEBUG= -O3 setDeb: {EXPORT} MyDEBUG="-DDEBUG=1 -g" objs: cFiles $(CC) -o $@ $^ $(cFiles) $(CFLAGS) $(LIBS) $(MYDEBUG) runme: objs ./oo 运行这个makefile时出错,设置debugging的命令在子shell上执行导致错误。 如果添加了“导出”,则该variables在该子shell中定义。 我想在构build对象时使用的makefile iteself中定义这个variables。 可能吗? 或者我应该复制“objs:cFiles”的目标?

“制作”子目录的首选方法

标准是什么? 在这种情况下,我们应该使用以下? $(MAKE) -C subdir cd subdir && $(MAKE) cd subdir ; $(MAKE) 什么时候做干净?

如何从GNU make文件运行Linux shell命令来设置构build目标的先决条件

我的问题是,在我的make文件中,我想在构build它之前创build所有目标代码的目录,并且我无法find一个方法来做到这一点,而不会影响make的输出。 另外,我想在一个地方做,而不是为每个对象文件。 我试过这个: build: setup exe.i686 setup: mkdir -p obj exe.i686: $(OBJS) @echo 'Building target: $@' @echo 'Invoking: GCC C++ Linker' ${GCC_LOCATION}/Linux/i686/bin/i686-pc-linux-gnu-g++ $(OBJS) -o "exe.i686" -L… @echo 'Finished building target: $@' @echo ' ' OBJS是我所有的目标代码。 如果我不先运行安装程序,并且目前没有./obj目录,则在尝试构build目标代码时,由于缺less目录,构build将会失败。 只是要清楚,这里是一个如何构build一个对象文件的例子: ./obj/Cell.o: ${CELL_ROOT}/main/cell/Cell/src/Cell.cc @echo 'Building file: $<' @echo 'Invoking: GCC C++ Compiler' $(GCC_C++_BUILD) -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" @echo […]

在Makefile中,如何validation是否安装了需要的Linux软件包

下面的代码在ptxdist Makefile中工作,但想知道在继续构build之前是否有更好的解决scheme来检查是否安装了所有必需的软件包? ENV_VERIFICATION: @echo ————START ENV VERIFICATION————— if ! dpkg -s sudo | grep Status | grep -q installed; then \ echo ERROR: sudo package not installed!; \ exit 1; \ fi if ! dpkg -s scons | grep Status | grep -q installed; then \ echo scons package not installed!; \ exit 1; \ […]

如何交叉编译ARM的autotools项目?

我正在寻找交叉编译使用GNU autotools构build系统的现有库。 我在我的主机中安装了一个Linaro arm-gcc工具链,我可以使用arm-gcc直接编译小程序。 主机: Ubuntu 12.04 Intel x64 目标机器: Ubuntu 14.04 ARM 32位(类似于Raspberry-Pi的板子) 我有一个库源代码,它有configure.ac和Makefile.am文件。 我想在主机上编译这个代码,并生成可以复制到目标平台的ARM二进制文件。 什么是规范的方式来做到这一点? 具体来说,我正在寻找一些适用于C语言中“Hello World”应用程序/库的工具,它使用arm-linux-gnueabi-gcc和autotools进行交叉编译。

为什么调用一个shell脚本目标创build一个可执行文件?

我编写了一个简单的shell脚本(称为test.sh ),使用两个不同的编译器(g ++和clang ++)编译一个testingC ++文件,并放入一些echo语句来比较输出。 在命令行上,我偶然input了make test ,即使在那个目录下没有Makefile。 它没有抱怨没有Makefile或没有定义目标,而是执行了以下命令(我的系统使用GNU Make 4.1运行64位Debian stretch OS): user@hostname test_dir$ make test cat test.sh >test chmod a+x test user@hostname test_dir$ 好奇的是,我做了另一个shell脚本( other.sh ),做了同样的事情。 这是我的other.sh文件: #!/bin/bash echo "" echo "This is another test script!" echo "" 命令行: user@hostname test_dir$ make other cat other.sh >other chmod a+x other user@hostname test_dir$ 我的问题是为什么当在terminal中运行make命令时make自动创build一个可执行脚本(没有.sh扩展名)? 这是正常的/预期的/标准的行为? […]

没有规则使目标'%.o'

由于不明的原因,GNU Make不为我做这个工作。 我有这个MAKE文件,我确保每个配方,我使用标签,而不是空间。 然而,我看着它,我只是无法find任何地方会导致错误信息。 OS:Ubuntu 17.10 / GNU Make:4.1 / GCC:交叉编译到i686-elf-gcc。 运行它:make(在同一个目录中)给我 make: *** No rule to make target '%.o', needed by 'kernel.elf'. Stop. 我有一个bash脚本,完全一样的东西,它的作品像魅力。 任何人都可以告诉我做错了什么? Makefile文件: NASM=nasm QEMU=qemu-system-i386 GCC=~/opt/cross/bin/i686-elf-gcc CFLAGS=-std=c11 -ffreestanding -Wall -Wextra -Werror -masm=intel -g -O0 ASFLAGS=-felf32 -g .PHONY: all clean all:boot.iso %.o : %.c $(GCC) -c $< $(CFLAGS) -o $@ %.so : […]

有没有一个标准的方法来loggingGNU Make包中的依赖关系?

我想知道是否有一个标准的方式来指示在基于Makefile的C / C ++项目中的依赖关系。 我应该在INSTALL还是README中提到它?

Glibc-2.22使(循环)错误

这个错误出现,当我尝试编译glibc包在第6.9章 – 从头开始​​从7.8的Linux通过。 当make运行时,进入一个无限循环,重复以下步骤: /usr/bin/install -c -m 644 ../include/limits.h /usr/include/limits.h gawk -f ../scripts/gen-as-const.awk ../sysdeps/x86_64/locale-defines.sym \ | gcc -S -o /sources/glibc-2.22/build/locale-defines.hT3 -std=gnu99 -fgnu89-inline -O2 -Wall -Werror -Wno-error=undef -Wundef -Wwrite-strings -fmerge-all-constants -frounding-math -g -Wstrict-prototypes -ftls-model=initial-exec -I../include -I/sources/glibc-2.22/build/string -I/sources/glibc-2.22/build -I../sysdeps/unix/sysv/linux/x86_64/64 -I../sysdeps/unix/sysv/linux/x86_64 -I../sysdeps/unix/sysv/linux/x86 -I../sysdeps/unix/sysv/linux/wordsize-64 -I../sysdeps/x86_64/nptl -I../sysdeps/unix/sysv/linux/include -I../sysdeps/unix/sysv/linux -I../sysdeps/nptl -I../sysdeps/pthread -I../sysdeps/gnu -I../sysdeps/unix/inet -I../sysdeps/unix/sysv -I../sysdeps/unix/x86_64 -I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/x86_64/64 -I../sysdeps/x86_64/fpu/multiarch -I../sysdeps/x86_64/fpu -I../sysdeps/x86/fpu/include […]