Tag: makefile

无法为CUDA C程序创建工作Makefile

我有一个由3个CUDA文件和2 个头文件组成的简单脚本: main.cu , kernel.cu func.cu , kernel.h和func.h。 他们的目标是计算2个向量的总和。 // main.cu #include #include #include #include #include “kernel.h” int main(){ /* Error code to check return values for CUDA calls */ cudaError_t err = cudaSuccess; srand(time(NULL)); int count = 100; int A[count], B[count]; int *h_A, *h_B; h_A = A; h_B = B; int i; for(i=0;i<count;i++){ *(h_A+i) […]

对makefile的递归调用不会更新目标文件

我有一个带有递归调用的makefile。 当我第一次运行make时,会创建目标文件并将其链接得很好。 但是当我修改源文件并再次运行make时,不会重新创建对象(make表示目标是最新的)。 我需要运行make clean然后运行make。 这是我的makefile的简化版本,我认为包括所有相关信息: PCC = mpicc #Locations OBJDIR = ./objects #Compiler and linker flags FLAGS = -g -lm #Object files SHAREDOBJS = $(addprefix $(OBJDIR)/,shared1.o shared2.o) SPECIFICOBJS = $(addprefix $(OBJDIR)/,specific1.o specific2.o) #How to compile and link $(OBJDIR)/%.o: %.c $(PCC) -c $*.c $(EXTRA_FLAGS) -o $(OBJDIR)/$*.o PROGNAME: $(MAKE) $(MAKEFLAGS) EXTRA_FLAGS=”$(FLAGS)” PROGNAME_TARGET PROGNAME_TARGET: $(SHAREDOBJS) $(SPECIFICOBJS) $(PCC) […]

Makefile重新链接错误

我试图让这个makefile重新链接,而不是重新编译未修改的unessecarily文件。 “libft”是我的库,没有任何错误。 在做的时候我有错误 make 是: make: *** No rule to make target `main.o’, needed by `ft_printf’. Stop. 我的makefile是: NAME = ft_printf SRC = main.c\ ft_printf.c\ parser_main.c\ utils.c\ debug_funcs.c OBJ = $(SRC:.c=.o) SRC_PATH = srcs/ SRC_POS = $(addprefix $(SRC_PATH),$(SRC)) INC = -I includes LIBFT = libft/libft.a CC = gcc FLAGS = -Wall -Wextra -Werror all: $(NAME) […]

C Makefile中-lpthread的位置

我对C中的Makefiles很新。我试图弄清楚我在makefile中放置-lpthread的位置,这样我就可以在我的C程序中实现posix线程。 以下是我的Makefile,提前谢谢。 CFLAGS = -g -Wall LDFLAGS = CC = gcc LD = gcc TARG1 = calc OBJS1 = calc.o $(TARG1): $(OBJS1) $(LD) $(LDFLAGS) $(OBJS1) -o $(TARG1) clean: rm -rf $(TARG1) $(OBJS1)

在Raspbian中创建一个Makefile

我正在尝试在Raspbian(Raspberry Pi)中为我的C程序创建一个Makefile。 我的程序包含一堆.c和.h文件。 我看过无数的Makefiles,但我不会解释它如何与多个文件一起工作。 Makefile中总有.o文件,但据我所知,目标文件是编译的结果,所以我没有任何o。 文件,因为我正在尝试编译我的.c文件。 请向我解释这是如何工作的。 编辑: 谢谢。 所以我尝试了这个,它开始编译,但有错误’多重定义’。 例: 这些是我的文件: main.c main.h calibration.c calibration.h file.c file.h frame.c frame.h gamepad.c gamepad.h gpio.c gpio.h uart.c uart.h types.h 这是我的makefile: all: main main: main.o calibration.o file.o frame.o gamepad.o gpio.o uart.o %.o: %.c gcc -c -std=c99 -Wall $< -o $@ -lncurses 我在哪里可以放’types.h’? 对于每个文件,我都会收到错误“多个定义”

如何为MS ++ Makefile定义C ++程序的路径?

我的问题:在我在MSYS和MSYS2环境中使用的Makefile中,我知道一个路径PYTHON_ROOT_DIR,它应该在C ++程序的编译时使用。 问题是PYTHON_ROOT_DIR在Makefile中称为posix样式路径,例如/mingw64/bin ,其中在C ++程序中它应具有类似”C:\\prog64\\msys64\\mingw64\\bin” 。 另外的挑战是,根据配置变量PYTHONMAJOR,路径应为宽字符或普通字符。 我的问题:如何在Makefile中解决这个问题,而无需在msys或msys2环境中安装其他程序/脚本?

仅在修改main.c时才从脚本调用make

问题:我想只运行一个脚本(例如run.sh),它将决定是否应该调用make (并在需要时调用它)然后运行可执行文件。 我的项目只有一个文件,即main.c. 然而,只是链接让我等了一点,我调试时不喜欢的东西,我渴望程序运行。 我希望这样的东西进入run.sh: #!/bin/bash if[ main.c has changed from the last time make was called] then make > compile.txt fi ./a.out 这样只有在修改main.c时才会调用make 。 通过修改,可以认为时间戳已更改(即使这可能不是实际标准)。 这可行吗? 如果是这样,我看到了这个答案 ,这让我觉得每次进入调用make的if语句的主体时,都会创建main.c的副本,或者存储文件的时间戳(在文件中)也许),以便下次脚本运行时,它将恢复该信息并检查if条件以查看时间戳是否不同。 那么,第二个问题是,如何做到这一点?

clang:错误:未知参数:’-wall’

我正在浏览本教程,在那里我必须创建这个make文件: CFLAGS=-wall -g clean: rm -f ex1 然后我在本教程中使用了上面的make文件,并运行以下命令: $ make ex3 当我这样做时,我得到以下输出: cc -wall -g ex3.c -o ex3 clang: error: unknown argument: ‘-wall’ make: *** [ex3] Error 1 为什么我收到错误? 我该如何解决? 谢谢。

C Makefile给出了两个.o文件

我有两个.o文件及其各自的头文件。 util.o和weatherio.o。 我正在尝试为我的项目创建一个makefile,但我似乎无法弄明白。 我创建了另外两个c文件main.c和analyze.c。 analyze包括util.h和weatherio.h,而main包括analyze.h。 这是我目前拥有的makefile,但它不起作用。 analyze: main.o analyze.o util.o weatherio.o cc analyze.o main.o util.o weatherio.o -o analyze analyze.o: weatherio.h util.h analyze.c analyze.h cc -c analyze.c main.o: main.c analyze.h cc -c main.c

Makefile第一个规则目标

我正在尝试使用简单的三个文件来学习make 。 foo.h中 #ifndef __foo_H_ #define __foo_H_ void print(); #endif foo.c的 #include #include “foo.h” void print() { printf(“Hello World !”); } main.c中 #include “foo.h” int main() { print(); return 0; } 当我使用以下makefile时,一切运行正常 生成文件 CC = gcc CFLAGS = -I. DEPS = foo.h OBJ = foo.o main.o .PHONY: clean main: $(OBJ) gcc -o $@ $^ $(CFLAGS) […]