我想从源代码生成nginx。 所以我写了一个bash脚本来做到这一点: #!/bin/bash export LD_LIBRARY_PATH="/usr/lib64:$LD_LIBRARY_PATH" dir=$(realpath `dirname $BASH_SOURCE`) cd $dir/modules for folder in * do ADD_MODULES="$ADD_MODULES \ –add-module=$dir/modules/$folder" done cd $dir/nginx ./auto/configure \ –prefix=/usr/share/nginx \ –sbin-path=/usr/sbin/nginx \ –conf-path=/etc/nginx/nginx.conf \ –error-log-path=/var/log/nginx/error.log \ –http-log-path=/var/log/nginx/access.log \ –http-client-body-temp-path=/var/lib/nginx/tmp/client_body \ –http-proxy-temp-path=/var/lib/nginx/tmp/proxy \ –http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi \ –http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi \ –http-scgi-temp-path=/var/lib/nginx/tmp/scgi \ –pid-path=/run/nginx.pid \ –lock-path=/run/lock/subsys/nginx \ –user=nginx \ –group=nginx \ –with-file-aio \ –with-ipv6 \ […]
我试图通过CLion编译nginx 1.9.5来进行debugging。 由于CLion目前不支持vanilla Makefiles / Autoconf,我运行了autoconf auto/configure脚本来生成一个有效的Makefile,在CLion中打开了项目,然后做了一个非常简单的CMakeLists.txt来将CLion构build委托给autoconf生成的Makefile如通过使用本地生成文件的CLion而不是CMake )。 不幸的是,我的简单CMakeLists.txt似乎有一个缺陷,因为当我重新加载并运行CLion的构build命令时,CMake似乎还生成了一个新的Makefile,并运行这个空的Make任务,而不是运行$ {nginx_SOURCE_DIR}中的一个。 我如何更改下面的CMakeLists.txt文件委托给nginx的Makefile,而不是重新生成一个新的? cmake_minimum_required(VERSION 2.8.4) project(nginx) add_custom_target(nginx ALL COMMAND make -C ${nginx_SOURCE_DIR} CLION_EXE_DIR=${PROJECT_BINARY_DIR})
我有两个脚本,由root拥有。 #!/bin/sh #script1.sh echo "all: first" > my_makefile echo >> my_makefile echo "first: " >> my_makefile echo "\ttouch file.txt" >> my_makefile #!/bin/sh #script2.sh while true do make -f my_makefile sleep 10 done script2.sh被称为“sudo sh script.sh”并不断在my_makefile上运行make。 script1.sh被个别用户调用来改变makefile。 我如何运行makefile命令,以便file.txt由用户拥有,而不是根?
公平的警告:我是使用makefiles的新手,所以这可能是明显的。 我试图做的是使用make来运行第三方代码生成工具,当且仅当该生成工具的源文件(称为他们.abc文件)更改。 我参考了http://www.cmcrossroads.com/ask-mr-make/6795-rebuilding-when-a-files-checksum-changes上的示例,其中显示了如何构buildMD5,我稍微调整了一下这个想法: 文件:abc.mk target = all files := $(wildcard Abc/*.abc) bltfiles := $files $(addsuffix .built,$files) all: $bltfiles %.built: %.abc %.abc.md5 @echo "Building $*" @ #Command that generates code from a .abc file @touch $@ %.md5: FORCE @echo "Checking $* for changes…" @ #Command to update the .md5 file, if the sum of the .abc […]
我正在尝试安装串行设备的驱动程序,当我运行安装可执行文件时出现此错误: cc -DLINUX -c -DMODVERSIONS -DMODULE -D__KERNEL__ -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -pipe -m64 -mcmodel=kernel -I/usr/src/linux-3.8.0-27-generic/include -I/usr/src/linux-2.4/include -I/usr/src/linux/include -D__SMP__ npreal2.c npreal2.c:40:31: **fatal error: linux/modversions.h: No such file or directory** compilation terminated. search论坛后,我没有find任何解决办法。 我注意到/usr/src/linux-3.8.0-27-generic/include/config中有一个modversions.h,但不在linux文件夹中。 请帮忙!
我是新编译内核模块,使用makefile包含树源文件。 我已经阅读了一些教程,但仍然不足。 没有太细节,我创build了一个场景来描述问题和生成的makefile。 dir1/main.c dir2/subdir2/file.c dir2/subdir2/include/file.h 以下是生成的makefile obj-m:=main.o main-y := ../dir2/include/file.o KDIR := /home/userid/rowboat-android/kernel/ PWD := $(shell pwd) default: $(MAKE) ARCH=arm CROSS_COMPILE=/home/userid/rowboat-android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi- -C $(KDIR) SUBDIRS=$(PWD) modules clean $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) clean 根据描述的这个场景,这个Makefile是否正确? 参考资料讨论了ccflags-y和EXTRA_CFLAGS。 有人可以解释这些交换机的目的吗? 我的主要参考来源是 构build外部模块 Linux内核Makefiles 问题和答案Stackoverflow 预先感谢您的时间
在我的env.sh里面: export BIN="/home/user/stuff" 在我的Makefile里面: 等等等等 TARGET = filetobeinstalled 等等等等 install: cp $(TARGET) $(BIN) 在运行make install之前,我在我的bash shell中定义了env vars: source /home/user/env.sh 。 我仔细检查,这些环境variables正在工作,通过在运行Makefile的shell中inputecho $BIN ,这给了我适当的响应( /home/user/stuff )。 所以,我试图将在shell提示符处定义的$BINvariables与source一起传递给引用$BIN Makefile中 ,但是没有定义它。 不幸的是,当我运行make install ,它并没有从输出中看到$BIN $ source /home/user/env.sh $ echo $BIN $ /home/user/stuff $ make install make[1]: Entering directory `/home/user/stufftoinstall' cp filetobeinstalled cp: missing destination file operand after `filetobeinstalled' […]
我有一个包含5个库的项目,每个库都来自10个C ++源文件,然后是10个依赖库的可执行文件。 每个图书馆也依赖于前一个。 使用CMake,然后在48核心Ubuntu机器上运行“make -j 50”,我首先必须等待每个库build立在10个或更less的内核上(大多数情况下更less,因为一个.C文件需要几分钟才能编译),然后我的可执行文件并行构build。 我想首先在所有的.C源文件(我知道如何把这个列表放入一个CMakevariables)中并行运行所有.Co编译,然后按照依赖关系指定的顺序运行链接器。 有没有办法做到这一点与CMake,例如通过设置假目标或类似的东西? (我只想重新编译已被修改的.C文件)。
在我目前的项目中,存在超过200MB的C文件。 在制作目标时,我可以看到只有<100MB用于创build二进制文件。 在创build目标时如何识别什么是文件。 所以,我们可以剥离它,使代码库更加圆滑。 如何在编译时识别为目标创build的文件列表?
我一直试图在Ubuntu服务器上安装开源路由机器(OSRM),但是当我运行生成在生成文件夹中停止在21%,并给我以下错误: [21%]构buildCXX对象CMakeFiles / OSRM.dir / Library / OSRM_impl.cpp.o 虚拟内存耗尽:无法分配内存 make [2]: * [CMakeFiles / OSRM.dir / Library / OSRM_impl.cpp.o]错误1 make [1]: * [CMakeFiles / OSRM.dir / all]错误2 make: * [all]错误2 $ 我已经在网上寻找一个解决scheme,发现改变ulimit和添加交换内存的build议,这两个都没有为我工作。 任何帮助将非常感激! 编辑:我联系了OSRM开发人员,事实certificate,我需要2.5 GB的内存。 我只有1.我通过添加交换文件来解决这个问题,遵循这些说明: http : //digitizor.com/2011/02/06/create-swap-file-ubuntu-linux/