Tag: makefile

如何使用clang和llvm-link链接库

我正在编译我的程序, clang++ -O4 -emit-llvm file1.cpp -c -o file1.bc -pthread clang++ -O4 -emit-llvm file2.cpp -c -o file2.bc -pthread llvm-link file1.bc file2.bc -o main.ll -S 如何指定与-ldl的链接

使用unitests构建我自己的库会抱怨未定义的引用

我正在建造一个简单的图书馆,里面有一些最简单的设施。 然而,make抱怨在构建unitest时存在未定义的引用。 我已经发布了所有代码和makefile。 这是什么原因? 文件层次: /bin /build Makefile /src dbg.h ex30.c libex30.c /tests dbg.h libex30_tests.c minuint.h runtests.sh Makefile文件: CFLAGS=-g -O2 -Wall -Wextra -Isrc -rdynamic -DNDEBUG $(OPTFLAGS) LIBS=-ldl $(OPTLIBS) PREFIX?=/usr/local SOURCES=$(wildcard src/**/*.c src/*.c) OBJECTS=$(patsubst %.c,%.o,$(SOURCES)) TEST_SRC=$(wildcard tests/*_tests.c) TESTS=$(patsubst %.c,%,$(TEST_SRC)) TARGET=build/libYOUR_LIBRARY.a #SO_TARGET=$(patsubst %.a,%.so,$(TARGET)) # The Target Build #all: $(TARGET) $(SO_TARGET) tests all: $(TARGET) tests dev: CFLAGS=-g -Wall […]

makefile与批处理文件基本相同吗?

我知道批处理文件的所有内容并且之前已经完成,但我不清楚makefile是什么。 它看起来像一个批处理文件。 有什么相似之处和差异?

发文件问题?

为什么当我使用我的makefile编译我的程序时,我获得了: gcc -Wall -pedantic src/main.c -o _wk/main.o src/main.c:9:11: warning: C++ style comments are not allowed in ISO C90 src/main.c:9:11: warning: (this will be reported only once per input file) src/main.c: In function ‘initialiseStructItimerval’: src/main.c:46: warning: format ‘%d’ expects type ‘int’, but argument 2 has type ‘__suseconds_t’ src/main.c: In function ‘stockeRetard’: src/main.c:71: warning: ISO C90 forbids […]

对Raspberry PI进行交叉编译

我正在为Raspberry PI开发板编写GUI应用程序,该应用程序利用OpenCV库来处理一些图像数据。 最终结果是带有一些按钮的图形应用程序,以及显示图像的区域。 我尽可能地避免使用IDE,因为除了通常与我工作的项目一起使用的新语言之外,每个工具都需要学习一个新的IDE是很乏味的。 我所有开发的95%都在VIM中。 如何设置一个基本的makefile项目,该项目使用GCC,OpenCV,GTK +,并为在x86系统上运行的Ubuntu安装上运行的Raspberry PI(即:arm11)进行编译? 目标是使这个可以在任何Linux系统上构建的可移植项目。 我熟悉通过apt-get安装OpenCV和GTK +库,我也知道我需要在main.c文件中包含特定的头文件。 现在我只需要弄清楚makefile中为ARM编译所需的基本语句,并链接到相应的库。 我通过apt-get获得的OpenCV库似乎是针对x86的,我不知道是否包含了ARM变体。 谢谢。

带或不带MSYS的MinGW makefile(del vs rm)

我正在使用MinGW在Windows上编译一些东西。 我直接从cmd.exe调用mingw32-make ,一切(我需要)工作正常。 但是我发现我需要能够从MSYS环境进行编译,而且我遇到了copy和del命令无法识别的问题。 我知道只需用cp和rm替换它们,但我想在两种情况下使用单个makefile。 有没有办法强制msys环境调用system del和cp命令? 或者更好的是,有没有办法区分是否从cmd.exe或msys调用makefile? 我可以为命令设置适当的变量。 这将非常有用,因为我可以删除一些其他重复的makefile。 任何帮助表示赞赏。 谢谢 编辑:并使事情变得更加困难: mingw32-make似乎使用sh.exe如果在从cmd.exe运行时在PATH中找到。 这有完全不同的环境变量集。 编辑:好的,如果有人仍然感兴趣,我最终得到了以下文件,我将其包含在我的其他Makefile中: ifeq ($(OS),Windows_NT) RM = del /Q /F CP = copy /Y ifdef ComSpec SHELL := $(ComSpec) endif ifdef COMSPEC SHELL := $(COMSPEC) endif else RM = rm -rf CP = cp -f endif 如果没有,你仍然认为这是一个重复的问题,我当然可以删除这个问题。 由于我不知道的原因, ComSpec和COMPSPEC有所不同。

我究竟如何使用makefile?

我此刻真的很困惑。 所以我有5个文件:main.c,flight.c,flight.h,passenger.c和passenger.h flight.h有flight.c的函数原型,passenger.h有passenger.c的函数原型 flight.c和passenger.c有这些function的定义。 main.c是我将与之交互的程序,从两个.c文件调用函数 我不太确定.o文件的用途是什么,请有人解释一下吗? 这是我的Makefile: flight.o: flight.c flight.h gcc -Wall -g -c flight.c passenger.o: passenger.c passenger.o gcc -Wall -g -c passenger.c main.o: main.c gcc -Wall -g -c main.c reservations.out: main.o flight.o passenger.o gcc -Wall -g flight.o passenger.o main.o -o reservations.out 编辑:然后我使用命令“make Makefile”,并得到一个错误:make:没有什么可以为`Makefile’做。 在我的文件中,gcc之前有一个标签。 我很感激任何帮助,我确信有很多事情我做错了。 谢谢。

makefile相对路径是否与gcc相对路径相同?

我知道这听起来像一个愚蠢的问题,而且确实如此。 我正在尝试编写一个makefile,它构建并链接到我正在编写的静态库(这是一个unit testing框架)。 基本上我无法弄清楚当我使用make时调用gcc的工作目录。 我的目录结构如下所示: ./ |-> src |-> include |-> project |-> Makefile |-> test |-> test.c, test.h |-> project |-> Makefile 所以,如果我进入test / project目录并键入以下命令,我似乎没有任何问题 gcc -I../../include -I../../src ../test.c 但是如果我使用的makefile基本上具有相同的配置(makefile在下面),那么我会得到一个错误: gcc -o test ../test.c In file included from ../test.c:7:0: ../test.h:8:24: fatal error: System.h: No such file or directory #include “System.h” (System.h是我在include/目录中的头文件之一)。 所以这是我的问题。 由于我正在尝试使用gcc来编译一个与makefile不同的相对路径的文件,该文件包含来自不同的相对路径,使用make执行此操作的正确方法是什么? 我应该将我的工作目录更改为包含test.c的目录,并包含相对于该目录的目录,还是应该将相对路径放到所有内容中,就像我从makefile目录中调用gcc一样? […]

在PintOS中运行make时获取未定义的引用“floor”

我试图在PintOS makefile上运行make,但我一直得到未定义的引用“floor”错误。 makefile在下面。 我用gcc 4.6.1运行Ubuntu 11.10。 任何帮助表示赞赏。 all: setitimer-helper squish-pty squish-unix CC = gcc CFLAGS = -Wall -W LDFLAGS = -lm setitimer-helper: setitimer-helper.o squish-pty: squish-pty.o squish-unix: squish-unix.o clean: rm -f *.o setitimer-helper squish-pty squish-unix 〜

如何编译目录中的所有.c文件并输出每个没有.c扩展名的二进制文件

我有一个包含多个c源文件的目录(每个文件本身就是一个小程序),我想一次编译所有文件,并在子目录bin /中为每个文件输出二进制文件。 二进制文件的名称应该是c源文件之一,但没有.c扩展名。 我怎么能在Makefile中完成类似的东西? 例: -src ll.c lo.c -bin ll lo 我想出的第一件事是: CFLAGS=-Wall -g SRC=$(wildcard *.c) all: $(SRC) gcc $(CFLAGS) $(SRC) -o bin/$(SRC) 但这并不是我认为的那样。