标签: makefile

制作文件选项

如何在我的make-file中使用选项-std=c99-std=gnu99编译我的C代码?

-include ../../../Common/C/Make.cfg

### target ###

TARGET_NAME   = myRec

### Objects, sources ###

# C source files

CSRCS = \
    myRec.c

LDLIBS ?= -lNBiometrics -lNMedia -lNCore

include ../../../Common/C/Make.rules
Run Code Online (Sandbox Code Playgroud)

c makefile compilation

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

如何为我的C项目创建一个makefile?

这是我的c项目它是完全简单的linux shell我在linux中运行这个程序我想为我的程序make makefile.我想简单的makefile学习我如何才能实现它?

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <signal.h>
#include <sys/types.h>
#define BUFFER_SIZE 1<<16
#define ARR_SIZE 1<<16
void sig_had(int signo)
{
    puts ("This is my signal handling ..!");

}
void parse_args(char *buffer, char** args, 
                size_t args_size)
{
    char *buf_args[args_size]; 
    char **cp;
    char *wbuf;
    size_t i, j;

    wbuf=buffer;
    buf_args[0]=buffer; 
    args[0] =buffer;

    for(cp=buf_args; (*cp=strsep(&wbuf, " \n\t")) != NULL ;){
        if ((*cp != NULL) && (++cp >= &buf_args[args_size]))
            break;
    }

    for (j=i=0; buf_args[i]!=NULL; i++){
        if(strlen(buf_args[i])>0)
            args[j++]=buf_args[i];
    }
}

int …
Run Code Online (Sandbox Code Playgroud)

c linux makefile

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

编译时对"dgesv_"的未定义引用

我有以下makefile:

CC = gcc

ROOTPATH = /home/swagatam
LIB_PATH = $(ROOTPATH)/mylib/libf2c.a \
            $(ROOTPATH)/mylib/blas_LINUX.a \
        $(ROOTPATH)/mylib/lapack_LINUX.a -lm


INC_PATH = -I$(ROOTPATH)/myinclude

swadgesv : swadgesv.o
    $(CC) $(LIB_PATH) swadgesv.o -o swadgesv

swadgesv.o : swadgesv.c
    $(CC) $(INC_PATH) -c swadgesv.c

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

swadgesv.c是程序求解AX = B形式的方程式.我需要3个头文件和3个库来链接解决概率.但是当我在终端中运行Makefile时,它显示:

gcc -I/home/swagatam/myinclude -c swadgesv.c
gcc /home/swagatam/mylib/libf2c.a /home/swagatam/mylib/blas_LINUX.a         /home/swagatam/mylib/lapack_LINUX.a -lm swadgesv.o -o swadgesv
swadgesv.o: In function `main':
swadgesv.c:(.text+0x0): multiple definition of `main'
/home/swagatam/mylib/libf2c.a(main.o):(.text.startup+0x0): first defined  here
/home/swagatam/mylib/libf2c.a(main.o): In function `main':
(.text.startup+0xad): undefined reference to `MAIN__'
swadgesv.o: In function `main':
swadgesv.c:(.text+0xc1): undefined …
Run Code Online (Sandbox Code Playgroud)

c makefile

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

向Makefile添加功能会产生错误: - "这里有多个definitoon ......"

我已经获得了一个已经正常工作的Makefile,它实际上工作正常.

Makefile内容可以在这篇文章中找到...

关于Makefile的问题 - 什么是"$ +"以及这里调用的.c文件/依赖项在哪里?

我从上面提到的上一篇文章中分别提出这个问题,因为它涉及一个不同的问题,并将其添加到该问题将不必要地增加其长度.

现在我添加了一个在很多地方经常使用的功能,所以我认为创建一个单独的文件将是一个不错的主意,所以我创建linklayer.c并添加linklayer.o$LIBOBJS.

我加了这个......

 LIBOBJS= linklayer.o csum.o compact.o protoname.o headers.o 
 parseargs.o cryptomod.o crc32.o
Run Code Online (Sandbox Code Playgroud)

还有这个

 linklayer.o:    linklayer.c
    $(CC) -o $@ -c -I. $(CFLAGS) $+
Run Code Online (Sandbox Code Playgroud)

我已经声明了sendip_module.h已经在项目中存在的每个模块中声明和访问的函数.

但现在这个多重定义错误即将来临......我做错了什么或误解了什么?

注意: "ipv6_opts"在ipv6.h中定义

$ make all
for subdir in mec ; do \
    cd $subdir ;\
    make  ;\
    cd ..  ;\
    done
make[1]: Entering directory `/home/udit/Desktop/sendip-2.5-mec-2/mec'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/udit/Desktop/sendip-2.5-mec-2/mec'
  gcc-4.4 -o ipv6.so -fPIC -fsigned-char -pipe …
Run Code Online (Sandbox Code Playgroud)

gcc makefile static-libraries static-linking

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

make:***没有规则来制作`libmy.so'所需的目标`gcc'.停止

我想将.c文件编译为.so(共享库).我不明白为什么,我有makefile让我出错:

LIB = libmy.so

SRC =   lib.c

CC = gcc

OBJ = $(CC) -c -fPIC $(SRC)

all: $(LIB)

re: fclean all

$(LIB): $(OBJ)
        $(CC) -shared -fPIC $(OBJ) -o $(LIB)

clean:
        $(RM) $(OBJ)

fclean: clean
        $(RM) $(LIB)
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助.

c makefile shared-libraries

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

麻烦在C中使用常量

在我的原型文件proto.h中,我有

#define LOOP_LIMIT 90.00
#define PI 3.14159

#ifndef _PROTO_H
#define _PROTO_H

#include <stdio.h>
#include <math.h>

#include "get_problem.c"
#include "deg_to_rad.c"
#include "evaluate_sin.c"
#include "evaluate_cos.c"
#include "evaluate_tan.c"

int main(void);
int get_problem();
double deg_to_rad(int deg);
void evaluate_sin(int deg);
void evaluate_cos(int deg);
void evaluate_tan(int deg);

#endif
Run Code Online (Sandbox Code Playgroud)

在我的lab7.c中我有我的主要功能,我包括proto.h.当我尝试使用"make"命令在Linux上编译时,我收到以下消息:

gcc -c deg_to_rad.c deg_to_rad.c:在函数"deg_to_rad"中:

deg_to_rad.c:2:错误:"PI"未声明(首次在此函数中使用)

deg_to_rad.c:2:错误:(每个未声明的标识符仅报告一次

deg_to_rad.c:2:错误:对于它出现的每个函数.)

make:* [deg_to_rad.o]错误1

我真的不明白这一点,因为我的主要功能正确使用LOOP_LIMIT,但PI无效.

deg_to_rad.c:

double deg_to_rad(int deg) {
    double rad = (PI * deg) / 180;
    return rad;
}
Run Code Online (Sandbox Code Playgroud)

c makefile constants

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

关于java makefile的基础知识

我是java和makefile的新手,我想了解一些关于makefile的介绍性信息.通常在网上找到的信息大多是示例和高级别的.以下是我对makefile的一些具体/天真的问题:

  1. 什么类型的文件是makefile的目标?.class和.java?

  2. makefile对那些项目文件做了什么?我在Eclipse中完成了我的项目,因此.class文件存储在bin中,.java文件存储在scr中.makefile在这些文件之间建立了什么样的连接?

  3. makefile的结果是什么?makefile的目的是告诉编译器如何生成可执行文件,因此结果是当前目录中的新可执行文件,是吗?

  4. 我应该在哪里放置makefile?在bin文件夹中?scr文件夹?将所有苍蝇混合在一个目录下并放在那里?

  5. 最后,我为我的项目制作了一个小的makefile,它应该编译3个类.它不起作用,我不知道为什么:

生成文件:

JFLAGS = -g
JC = javac
.SUFFIXES: .java .class
.java.class:
    $(JC) $(JFLAGS) $*.java

CLASSES = \
    DNA.java \
    C.java \
    fastmatch.java 

default: classes

classes: $(CLASSES:.java=.class)

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

我做错什么了吗?我只需将所有内容放在一个文件夹下,然后在命令行中输入"make".我想我在这里错过了一些大图,所以如果有人能向我解释,我真的很感激.谢谢

java eclipse makefile compilation

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

g ++"没有命名类型"错误

我正在为我的结构课开展一个小项目,并且遇到一个问题,即使TA无法弄清楚.有人建议我在这里发帖,我可能会得到一些帮助.所以这里:

概述: 我正在使用g ++编译包含许多头(.h)文件及其相应实现(.cpp)文件的项目.该项目涉及3个独立的结构,并在它们之间进行时序比较.正在实现和比较的结构是二进制最小堆,左侧堆和倾斜堆.最小堆实现已完成,编译正常.但是现在我正在转向其他结构,我正在遇到我认为(我知道)编译器错误.

问题 我正在充实左派堆的存根文件,并且就编译器而言已经遇到了问题.特别是我收到的错误是:

leftHeap.cpp:15:1: error: ‘LeftistHeap’ does not name a type
Run Code Online (Sandbox Code Playgroud)

代码 这里是相关代码:

leftHeap.h

#ifdef LEFTHEAP_H
#define LEFTHEAP_H

class LeftistHeap{

 public:
  int *root;
  LeftistHeap();
  ~LeftistHeap();
};

#endif
Run Code Online (Sandbox Code Playgroud)

leftHeap.cpp

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <stdio.h>
#include <math.h>
#include "leftHeap.h"
using namespace std;

//Constuctor
LeftistHeap::LeftistHeap(){

 root = NULL;
}
Run Code Online (Sandbox Code Playgroud)

包含leftHeap.h的唯一其他地方是main.cpp

main.cpp中

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <stdio.h>
#include <math.h>
#include "minHeap.h"
#include "leftHeap.h"
#include "skewHeap.h"
using namespace std;


int main(){
...
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的makefile:

生成文件

all: lab10 …
Run Code Online (Sandbox Code Playgroud)

c++ compiler-errors makefile g++ header-files

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

带字符串的gcc -D选项中的错误

我正在使用一个调用makefile的shell来重新编译具有不同#define选项的同一个项目.

shell调用makefile,如下所示:

make UserDefined="-D SomeDefines -D InputFileName=\"input/In$SIZE.txt\"" -s
Run Code Online (Sandbox Code Playgroud)

其中$ SIZE是一个数字变量,例如等于32,这对项目的所有文件编译好,但不是main.cpp,main.cpp的命令是:

g++ $(CFLAGS) $(Main) \
    -I$(CUDA_HOME)/include \
    -lpthread -o main.o
Run Code Online (Sandbox Code Playgroud)

$(Main)是输入文件的路径$(CUDA_HOME)是cuda库的路径,$(CFLAGS)是:CFLAGS = -c -Wall $(UserDefined)-std = c ++ 0x

执行此命令时,会发生以下错误:

../src/main.cpp: In function ‘int main()’:
../src/main.cpp:11:30: error: ‘input’ was not declared in this scope
../src/main.cpp:11:30: error: ‘In32’ was not declared in this scope
Run Code Online (Sandbox Code Playgroud)

main.cpp文件中的第11行:

InputSignalFile.open(InputFileName);
Run Code Online (Sandbox Code Playgroud)

我从shell和命令行尝试了它.那没起效.我也试过"而不是".同样的错误.我尝试创建一个像这样的新变量:

Var=\"input/In$SIZE.txt\"
Run Code Online (Sandbox Code Playgroud)

然后 :

-D InputFileName=$Var
Run Code Online (Sandbox Code Playgroud)

也没用.但是当我#define InputFileName "input/In32.txt"在main.cpp中它工作正常.当然我不能这样做,因为我每次都需要更改数字.任何帮助?

gcc makefile g++

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

使文件语法错误 - 缺少分隔符

我在下面第139行得到make文件错误,$(eval $(RULES)) 我对make文件语法缺乏经验.这是我输入make命令时给出的错误.

common.mak:139: *** missing separator.  Stop.
Run Code Online (Sandbox Code Playgroud)

我试图通过单个空格删除选项卡,\ t无效.你知道原因是什么吗?

谢谢

#
# common bits used by all libraries
#

# first so "all" becomes default target
all: all-yes

ifndef SUBDIR

ifndef V
Q      = @
ECHO   = printf "$(1)\t%s\n" $(2)
BRIEF  = CC CXX HOSTCC HOSTLD AS YASM AR LD STRIP CP
SILENT = DEPCC DEPHOSTCC DEPAS DEPYASM RANLIB RM

MSG    = $@
M      = @$(call ECHO,$(TAG),$@);
$(foreach VAR,$(BRIEF), \
    $(eval override $(VAR) = @$$(call ECHO,$(VAR),$$(MSG)); $($(VAR))))
$(foreach …
Run Code Online (Sandbox Code Playgroud)

makefile

0
推荐指数
2
解决办法
8130
查看次数