当前位置:  技术问答>linux和unix

如何在便编写一个makefile,使其编译时能产生可执行文件?急!谢谢帮忙!

    来源: 互联网  发布时间:2015-03-10

    本文导语:  我的makefile.bak是这样写的 all: gtk_pizza message_box mkphone clean: rm -f *.o gtk_pizza CC = gcc -g -Wall -m486 `gtk-config --cflags` -I/usr/local/pgsql/include PGLIBS = -L/usr/local/pgsql/lib -lpq -lcrypt OBJS = data_entry.o gtkinput.o pizza_utils.o...

我的makefile.bak是这样写的
all: gtk_pizza message_box mkphone

clean:
rm -f *.o gtk_pizza

CC = gcc -g -Wall -m486 `gtk-config --cflags` -I/usr/local/pgsql/include

PGLIBS = -L/usr/local/pgsql/lib -lpq -lcrypt

OBJS = data_entry.o gtkinput.o pizza_utils.o 
cust_maint.o 
suburb_maint.o 
date_setter.o 
item_maint.o 
store_maint.o 
user_maint.o 
cat_maint.o 
seat_maint.o 
select_screen.o 
select_cust.o 
merge_cust.o 
cust_details.o 
dockets.o 
order_entry.o 
display_file.o 
inform_all.o 
changed_report.o 
language.o 
reports.o

HEADERS = cust_maint.h 
suburb_maint.h 
item_maint.h 
store_maint.h 
user_maint.h 
cat_maint.h 
seat_maint.h 
select_screen.h 
select_cust.h 
merge_cust.h 
cust_details.h 
dockets.h 
order_entry.h 
language.h 
reports.h

date_setter.o: date_setter.c date_setter.h
${CC} -c date_setter.c

reports.o: reports.c reports.h display_file.h
${CC} -c reports.c

inform_all.o: inform_all.c inform_all.h
${CC} -c inform_all.c

changed_report.o: changed_report.c reports.h order_entry.h
${CC} -c changed_report.c

order_entry.o: order_entry.c order_entry.h pizza_utils.h select_screen.h dockets.h 
cust_details.h inform_all.h display_file.h
${CC} -c order_entry.c

display_screen.o: display_screen.c order_entry.h
${CC} -c display_screen.c

dockets.o: dockets.c dockets.h pizza_utils.h order_entry.h
${CC} -c dockets.c

cust_details.o: cust_details.c pizza_utils.h select_screen.h dockets.h order_entry.h select_cust.h
${CC} -c cust_details.c

merge_cust.o: merge_cust.c pizza_utils.h select_screen.h cust_details.h
${CC} -c merge_cust.c

select_cust.o: select_cust.c pizza_utils.h select_screen.h cust_details.h
${CC} -c select_cust.c

select_screen.o: select_screen.c pizza_utils.h cust_details.h order_entry.h reports.h date_setter.h
${CC} -c select_screen.c

cat_maint.o: cat_maint.c pizza_utils.h
${CC} -c cat_maint.c

user_maint.o: user_maint.c pizza_utils.h
${CC} -c user_maint.c

store_maint.o: store_maint.c pizza_utils.h
${CC} -c store_maint.c

item_maint.o: item_maint.c pizza_utils.h
${CC} -c item_maint.c

suburb_maint.o: suburb_maint.c pizza_utils.h
${CC} -c suburb_maint.c

cust_maint.o: cust_maint.c pizza_utils.h
${CC} -c cust_maint.c

pizza_utils.o: pizza_utils.c pizza_utils.h
${CC} -c pizza_utils.c

gtk_pizza: gtk_pizza.o pizza_utils.h ${HEADERS} ${OBJS}
${CC} -Wall -o gtk_pizza gtk_pizza.o ${OBJS} ${GTKLIBS} ${PGLIBS} 
`gtk-config --libs` 
-lgdk_imlib -ljpeg -lgif -lpng -ltiff -lX11 -lz 

mkphone: mkphone.c
${CC} -Wall -o mkphone mkphone.c ${PGLIBS}

message_box: message_box.c
${CC} -o message_box message_box.c `gtk-config --cflags` `gtk-config --libs` 

denom: denom.c
${CC} -o denormalize denom.c ${PGLIBS}
denormalize
如何修改,才能生成可执行文件,一旦生成可执行文件,即刻送分!因为这个文件是网上下的,所以我不是很看的懂,希望指教!

|
如果你确实看到了gtk_pizza这个可执行文件,我怀疑你没有加路径,不如用./gtk_pizza来执行试试

|
你的这个Makefile也太累了!
试试看这个:
#Makefile

####################################################################
# Customising :
#
# Adjust the following if necessary; EXECUTABLE is the target
# executable's filename, and LIBS is a list of libraries to link in
# (e.g. alleg, stdcx, iostr, etc). You can override these on make's
# command line of course, if you prefer to do it that way.
####################################################################
PACKAGE := mysqlsync
VERSION := 1.0
EXECUTABLE := mysqlsync  # EXE file
TARGETLIB :=             # library file
INCLUDES := -I/usr/include/mysql
LIBS += -L/usr/lib/mysql -lmysqlclient #-lm
DEMOS := download.c upload.c test.c docreate.c
DISTFILES := $(TARGETLIB)
DISTFILES += $(DEMOS)

exclude_from_build := $(DEMOS)
exclude_from_mklib := $(DEMOS)   # for create library, filter out the main(), and so on.

profiling := off       # enable profiling (eg: use 'gprof')

CFLAGS := -Wall
CFLAGS += -DLINUX
CFLAGS += -I/usr/include/mysql

####################################################################
# You shouldn't need to change anything below this point. 
####################################################################
srcdir = .
top_srcdir = .
top_builddir = .
distdir := $(PACKAGE)-$(VERSION)_$(shell date +%y%m%d_%H%M%S)

# for compile
CC := gcc

override CFLAGS += $(patsubst %,-I%,$(subst :, ,$(VPATH)))
ifeq "$(strip $(profiling))" "on"
    build:  CFLAGS += -pg # enable profiling
endif
mklib:  CFLAGS += -fPIC   # for create library

SOURCES := $(wildcard *.c)
BUD_OBJS := $(patsubst %.c,%.o,$(filter-out $(exclude_from_build),$(SOURCES)))
LIB_OBJS := $(patsubst %.c,%.o,$(filter-out $(exclude_from_mklib),$(SOURCES)))

vpath %.c src/:Src/:SRC/
vpath %.h header/

# for create library
AR := ar
ARFLAGS := r

# for release library
TAR = gtar
GZIP_ENV = --best

########################################################
# rules
########################################################
all: build

build: $(EXECUTABLE)

mklib: $(TARGETLIB)

rebuild:clean build

remklib:clean cleanlib mklib

$(EXECUTABLE): $(BUD_OBJS)
$(CC) $(CFLAGS) -o $@ $^ $(LIBS) $(INCLUDES)

$(TARGETLIB): $(LIB_OBJS)
$(AR) $(ARFLAGS) $@ $^

dist: distdir
-chmod -R a+r $(distdir)
GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
-rm -rf $(distdir)

distdir: $(DISTFILES)
-rm -rf $(distdir)
mkdir $(distdir)
-chmod 777 $(distdir)
here=`cd $(top_builddir) && pwd`; 
top_distdir=`cd $(distdir) && pwd`; 
distdir=`cd $(distdir) && pwd`
@for file in $(DISTFILES); do 
    cp -pr $(srcdir)/$$file $(distdir)/$$file; 
done

########################################################
# depends
########################################################

#depends.d:$(SOURCES)
# $(CC) -MM $^ > $@
#include depends.d

mkdep: %.d

%.d: %.c
set -e; $(CC) -MM  $(CFLAGS) $(CPPFLAGS) $(INCLUDES) $ $@; 
                [ -s $@ ] || rm -f $@

include $(SOURCES:.c=.d)

########################################################
# clean
########################################################
cleanall: cleanbin cleanlib cleandep

clean: cleanbin

cleanbin:
rm -f $(EXECUTABLE) *.o *~

cleanlib:
rm -f *.a *.o *~

cleandep:
rm -f *.d


.PHONY: all build mklib rebuild remklib 
dist distdir mkdep 
cleanall clean cleanbin cleanlib cleandep




    
 
 

您可能感兴趣的文章:

  • 如何编写Makefile,使得只编译改变的文件
  • 使用editplus编写java如何编译成字节码文件,如何解释
  • 用jbuilder 编写的appliction 程序,如何独立于jbuilder 编译器之外运行?
  • 自己编写一个程序编译进内核,要修改makefile文件吗?
  • vc编写dll动态连接库(编译过的)能在unix上开发使用吗?
  • jbuilder7问题 编译没有问题,内部运行编写的的java程序就退出了???
  • 编译和使用自己编写的linux内核模块的问题
  • 各位ggmm,问一个简单问题,在编写完ejb的三个文件后,怎么将其编译成。class文件?
  • 请问如何可以方便的使用UltraEdit来编写、编译Java程序?
  • 入门者的问题:我在UNIX的环境下,编写了c程my.c,编译后生成 my*,可是用什么命令执行这个程序呀?
  • 能不能告诉我使用editplus编写java如何编译成字节码文件,如何解释?,虽然问题简单一点,可对我很需要
  • 根据Java提供的.class的文件结构我们可以编写出针对.class文件的反编译程序吗?
  • 博客 iis7站长之家
  • 如何可以方便的使用UltraEdit来编写、编译 运行Java程序?当类在一个包里面时怎样设置?
  • 解救远程编码的coder, 使用VC+VA编写/编译/运行/调试linux程序
  • 怎样编写和编译动态库
  • 下载了一个用ffmpeg的libavcodec和libavformat编写的播放器程序,编译总失败???
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 函数互相调用时Makefile编写
  • 我编写的Makefile文件怎么老是有错误那??
  • 请教Makefile文件编写
  • 想学编写内核和编makefile文件要看什么书
  • makefile文件的编写问题
  • 急求关于怎么编写makefile的资料???
  • 关于动态库的Makefile的编写
  • cmake怎么编写才使Makefile是高试模式
  • 请教makefile文件编写问题
  • 编写一个makefile
  • 求教solaris下Makefile的编写
  • Makefile编写
  • 在编写MAKEFILE的时候,如何判断一个文件是否存在呢???
  • 求教有关makefile编写的问题 MYSRCS:%c=%o
  • makefile文件的编写
  • makefile编写问题
  • 编写内核模块程序的makefile文件make错误
  • Makefile编写疑问,需要这么麻烦吗?
  • 多目录的Makefile编写
  • 如何编写 makefile.am 文件让其make后生成 lib*.so* 格式的链接库文件?
  • 编写 linux shell 有什么好的编写工具呢?
  • VB编写的DLL不能被JAVA调用,用C将VB编写的DLL包装起来,做成一个新的DLL;用C编写的DLL可以被JAVA调用,用JAVA再进行一层的包装,因为JAV
  • 用Qt3.1.4编写的程序,如何加入自己编写的另外一个动态库呀?诚恳指教!!
  • 如图 scsi <---> scsi controller <---> pci <---> cpu 如果我想对scsi编写驱动我该对哪个部分编写?
  • 用什么工具编写JSP,可以象用InterDev编写ASP一样方便快捷?
  • 编写程序如编写人生,有人和我的意见相同吗?
  • 请问用jsp编写程序,非要编写代码么?有没有什么象fontpage2000那样的工具,能够生成一些固定模板的工具?就是说不用全部都写的工具。望
  • 用jsp编写web程序到底和java serverlet编写web程序有和区别
  • socket中,从client端(用java编写的)传到server端(用c编写的)的字符串为何总多一个ASCII码为10的字符呀?
  • 如何用java编写一个NT平台下的标准服务?
  • 关于用vj编写sniffer一问。


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3