标签: makefile

无法获取makefile来生成gmon.out

我试图描述我的代码,因为我无法弄清楚是什么减慢了它.我有以下makefile:

CXX=gcc
RM=rm -f
CFLAGS=-pg -DNDEBUG -O3 -g3 -O0 -D_FILE_OFFSET_BITS=64
LDFLAGS=-pg -lpthread `pkg-config fuse --cflags --libs`
EXEC = fs

SRCS=$(shell echo *.c)
OBJS=$(subst .c,.o,$(SRCS))

all: $(EXEC)

$(EXEC): $(OBJS)
        $(CXX) $(LDFLAGS) -o $(EXEC) $(OBJS)

%.o: %.c
        $(CXX) $(CFLAGS) -c -o $@ $^

clean:
        $(RM) *.o
        $(RM) $(EXEC)
Run Code Online (Sandbox Code Playgroud)

产生这个输出:

gcc -pg -DNDEBUG -O3 -g3 -O0 -D_FILE_OFFSET_BITS=64 -c -o datablock.o datablock.c
gcc -pg -DNDEBUG -O3 -g3 -O0 -D_FILE_OFFSET_BITS=64 -c -o disk.o disk.c
gcc -pg -DNDEBUG -O3 -g3 -O0 -D_FILE_OFFSET_BITS=64 -c -o fsinterface.o fsinterface.c …
Run Code Online (Sandbox Code Playgroud)

c gcc makefile gprof

0
推荐指数
1
解决办法
3821
查看次数

为什么我必须在链接器行的末尾传递库?

像这样的命令将起作用:

(LD) $(LDFLAGS) -o reip.app newlib/crt0.o reip.o renetif.o fs.o httpd.o liblwip.a newlib/libc.a
Run Code Online (Sandbox Code Playgroud)

但是如果我在*.o文件之前放置*.a - 它将无法从libs中找到函数.

我搜索了一些旧的项目,发现在makefile文件中,如下所示:

$(CC)  $(LIBS) -o $(TARGET) JukeboxMain.o JukeboxPlayer.o ...
Run Code Online (Sandbox Code Playgroud)

直到我将$(LIBS)移到行尾才能工作.但我记得很久以前这对我很有用.有人可以回答改变了什么以及为什么它不再起作用了)PS我不喜欢玩编译器,链接器和其他工具 - 我更喜欢创建一些东西;)

c c++ linker makefile

0
推荐指数
1
解决办法
262
查看次数

解释c中的头文件路径

我在ac程序中有一个读取头文件路径

#include <lib/a.h>
#include <lib/b.h>
Run Code Online (Sandbox Code Playgroud)

如何在makefile中指定'lib'应该在哪里?它给我一个编译错误,说找不到lib/ah.但我知道啊所在的系统路径.如何告诉我的Makefile去哪里找lib?

谢谢,维克.

c c++ gcc makefile header-files

0
推荐指数
1
解决办法
57
查看次数

如何在C++中定义向量?

我复制粘贴我的代码和我得到的错误.这很奇怪.我已经标记了我遇到错误的所有行.我甚至无法编译课程.

#ifndef MYRECORD_H
#define MYRECORD_H
#include "MyException.h"
#include <map>

using namespace std;
//Error in next line
using std::vector;

class MyRecord {
public:
    explicit MyRecord(string& id); // I don't want implicit conversion from std::string to MyRecord!
    // Mutator functions - setting of other fields
    // In this version, hardly any of the implementations will actually throw exceptions
    // later validation functions will be added
    void setName(string& aname) throw (MyException);
    void setEmail(string& amail) throw (MyException);
    void setInfo(string& info) throw (MyException);
    void setImage(string& …
Run Code Online (Sandbox Code Playgroud)

c++ makefile vector

0
推荐指数
1
解决办法
587
查看次数

Makefile第一个规则目标

我正在尝试make使用简单的三个文件.

foo.h中

#ifndef __foo_H_
#define __foo_H_

void print();

#endif
Run Code Online (Sandbox Code Playgroud)

foo.c的

#include <stdio.h>
#include "foo.h"


void print()
{
    printf("Hello World !");
}
Run Code Online (Sandbox Code Playgroud)

main.c中

#include "foo.h"

int main()
{
    print();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我使用以下makefile时,一切运行正常

生成文件

CC = gcc
CFLAGS = -I.
DEPS = foo.h
OBJ = foo.o main.o 

.PHONY: clean

main: $(OBJ)
        gcc -o $@ $^ $(CFLAGS)

%.o: %.c $(DEPS)
        $(CC) -c -o $@ $< $(CFLAGS)

clean:
        rm *.o
Run Code Online (Sandbox Code Playgroud)

上面的工作是因为make默认运行第一个目标(我基本上到处读取).

如果我使用下面的makefile

CC = gcc
CFLAGS = -I.
DEPS …
Run Code Online (Sandbox Code Playgroud)

c c++ makefile

0
推荐指数
1
解决办法
644
查看次数

使用linux csh脚本在许多子目录中执行makefile

我正在尝试编写一个csh脚本,它将在子目录中执行makefile.到目前为止我有这个:

find -maxdepth 2 -name 'Makefile' -print -execdir make \;

我遇到的问题是当我尝试运行它时出现以下错误:

find: The current directory is included in the PATH environment variable, which is insecure in combination with the -execdir action of find. Please remove the current directory from your $PATH (that is, remove "." or leading or trailing colons)

在这种情况下,我无法合理地更改$ PATH变量.关于变通方法的任何想法.

非常感谢和愉快的编码

linux shell scripting csh makefile

0
推荐指数
1
解决办法
266
查看次数

Makefile:为一个构建步骤设置env var

我正在使用GNU make和Makefiles.是否可以为一个构建步骤设置环境变量?

目前我正在做这样的事情:

VAR:=valueA
step1:
    echo $(VAR)
Run Code Online (Sandbox Code Playgroud)

然后,"make step1"将打印"valueA".

是否有可能为一个构建步骤重新定义env var?

VAR:=valueA
step1:
    echo $(VAR)
step2:
    VAR:=valueB
    echo $(VAR)
Run Code Online (Sandbox Code Playgroud)

我想"make step1"打印"valueA",但是"make step1"打印"valueB".

makefile environment-variables

0
推荐指数
1
解决办法
1654
查看次数

Linux bash-script在所有子目录中运行make

我正在尝试在Linux中编写一个遍历当前目录的bash脚本,并在每个子目录中启动现有的makefile.它应该适用于每个子目录,无论深度如何.

一些限制:

  • 我不能使用Python;
  • 我事先并不知道有多少个子目录及其名称;
  • 我事先并不知道当前目录的名称;
  • make只有在此类文件夹中有makefile时,才应启动每个目录的命令.

关于如何做的任何想法?

bash makefile

0
推荐指数
1
解决办法
1763
查看次数

make始终重建Makefile目标

我重新设计Makefile了论文项目的大部分文件,以便正确反映工作流程(为项目子目录中的目标创建依赖项的制定规则).但是,在特定的子目录(prepare)中,即使没有依赖项更改,也make 始终重建所有目标.这种意外行为可能是什么原因?

注意:sf.done是一个真实的文件(类型,我称之为"标记文件"),位于不同的子目录中,并在完成数据收集(import)时创建/更新目标的相关步骤transform.

准备/ Makefile文件:

IMPORT_DIR=../import

prepare: import \
         transform \
         cleanup \
         merge \
         sample

import: $(IMPORT_DIR)/sf.done
transform: transform.done
cleanup: cleanup.done
merge: merge.done
sample: sample.done

transform.done: transform.R import
    @$(RSCRIPT) $(R_OPTS) $<
    @touch $@

cleanup.done: cleanup.R transform
    @$(RSCRIPT) $(R_OPTS) $<
    @touch $@

merge.done: merge.R cleanup
    @$(RSCRIPT) $(R_OPTS) $<
    @touch $@

sample.done: sample.R merge
    @$(RSCRIPT) $(R_OPTS) $<
    @touch $@

.PHONY: import transform cleanup merge …
Run Code Online (Sandbox Code Playgroud)

workflow dependencies makefile r

0
推荐指数
1
解决办法
1197
查看次数

无法从Makefile链接静态库

我构建了一个静态库.问题是我无法从我的Makefile链接它

TARGET  =       AR1020
CC      =       gcc
CFLAGS  =       -Wall -std=c99 -I./inc/
LINKER  =       gcc -o
LFLAGS  =       -Wall -static -I./inc/


SRCDIR  =       src
INCDIR  =       inc
OBJDIR  =       obj
BINDIR  =       bin

LIBDIR  =       ./lib
LIBFLAG =       -li2c


SOURCES         :=      $(wildcard $(SRCDIR)/*.c)
INCLUDES        :=      $(wildcard $(INCDIR)/*.h)
OBJECTS         :=      $(SOURCES:$(SRCDIR)/%.c=$(OBJDIR)/%.o)
rm              =       rm -f

$(BINDIR)/$(TARGET): $(OBJECTS)
        @$(LINKER) $@ $(LFLAGS) -L$(LIBDIR) $(LIBFLAG) $(OBJECTS)
        @echo "Linking complete!"

$(OBJECTS): $(OBJDIR)/%.o : $(SRCDIR)/%.c
        @$(CC) $(CFLAGS) -c $< -o $@
        @echo "Compiled "$<" successfully"

.PHONY: …
Run Code Online (Sandbox Code Playgroud)

c linux gcc makefile static-libraries

0
推荐指数
1
解决办法
980
查看次数