makefile for exe

CC = g++
DBG = -Wall -D__LINUX__ -DUTIL_DEBUG

ifndef  DEBUG_SET
	DEBUG_SET= -g 
endif


IFLAGS =-I .\
		-I ../hdr/ \
		-I ../hdr/protobuf/ \
		-I ../hdr/zmq/ \
		-I ../hdr/audio/ \
		-I ../hdr/opencv/ \
		-I ../hdr/opencv2/ \
		-I ../hdr/tiny/ \
		-L ../lib/protobuf/\
		-L ../lib/zmq/\
		-I $(LOG4J_ROOT)/include \
		-I ${ACE_ROOT}\

INDEX_ROOT=..
LIBS =	-L .\
		-L ../lib/\
		-L ../lib/zmq/\
		-L ../lib/protobuf/\
		-L ../lib/opencv2.6/\
		-L $(LOG4J_ROOT)/lib \
		-L ${ACE_ROOT}/lib\
		-lpthread\
		-lzmq\
		-llog4cxx \
		-lACE \
		-lprotobuf\
		-lSKP_SILK_SDK\
		-lcrypto\
		-lFCEncode \

LINK = -Wl,-rpath  \
  -Wl,-rpath=../lib/\


TARGET=XXX
all:$(TARGET)

OBJS=ReadConf.o\
  	 ConfParse.o\
	 ThreadObject.o\
	 ZMQ_PipeSocket.o\
	 SocketSend.o\
	 RecvThread.o\
	 SendThread2_Image.o\
	 SendThread2_Audio.o\
	 SendThread2_Video.o\
	 RecordSetThread.o\
	 AudioThread.o\
	 StatThread.o\
	 ConnectThread.o\
 	 LoadThread.o\
	 AES.o\
	 MediaTools.o\
 	 BASE64.o\
	 Machine.o\
	 Company.o\
	 tinystr.o\
	 tinyxml.o\
	 tinyxmlerror.o\
	 tinyxmlparser.o\
	 SendThread1.o\
	 Queues.o\
	 main.o\

$(TARGET):$(OBJS)
	$(CC) -fPIC -o ./$(TARGET) $(OBJS) $(LIBS) $(LINK)
	mkdir -p ../bin
	cp -f $(TARGET) ../bin/
	
	
.cpp.o:
	$(CC) $(DBG) $(DEBUG_SET) $(IFLAGS) -fPIC -c $<
	
clean:
	rm *.o -fr
	rm -f XX

在 `Makefile.win` 构建目标 `txlSystem.exe` 失败的情况下,通常涉及几个关键问题:路径错误、依赖缺失、编译器配置不当或源码兼容性问题。以下是对这些问题的分析和解决方法。 ### 路径问题导致构建失败 如果构建时提示“recipe for target ‘xxx.o’ failed”,这通常意味着 Makefile 中指定的目标文件路径不存在或路径中包含非法字符。需要检查 `Makefile.win` 中的路径是否正确,尤其是对象文件(`.o`)的输出目录是否可写且路径中没有空格或特殊字符。此外,重新组织项目结构或使用更短、清晰的路径可以有效避免此类问题 [^1]。 ### 缺失依赖或库文件 构建失败也可能是因为依赖库未正确链接。例如,在链接阶段出现 `ld returned 1 exit status` 错误,可能是由于缺少必要的库文件(如 `wsock32`)。此时可以在编译命令中手动添加库链接参数,如 `-lwsock32`,确保链接器能够正确找到并链接所需库 [^4]。 ### 编译器配置问题 如果项目之前可以正常运行,但重新打开后出现问题,可能是由于编译器配置或环境变量发生了变化。例如,在某些情况下,Cygwin 环境下的编译失败可能是由于环境变量未正确设置或某些依赖版本不兼容。关闭并重新启动 Cygwin,或者重新配置编译环境,有时可以解决这类问题 [^3]。 ### 源码兼容性问题 在使用较新版本的库(如 mpfr 4.x)时,可能会出现与旧版本 Makefile 的兼容性问题。例如,`Makefile:532: recipe for target 'mul.lo' failed` 错误可能表明 Makefile 中的某些规则与当前版本的依赖库不兼容。此时可以尝试降级库版本,或者更新 Makefile 以适配新版本 [^2]。 ### 示例 Makefile 配置修复 以下是一个修复路径和依赖问题的示例 Makefile 片段: ```makefile CC = gcc CFLAGS = -Wall -Wextra -g LDFLAGS = -lwsock32 SRC = main.c OBJ = $(SRC:.c=.o) TARGET = txlSystem.exe all: $(TARGET) $(TARGET): $(OBJ) $(CC) $(LDFLAGS) -o $@ $^ %.o: %.c $(CC) $(CFLAGS) -c $< -o $@ clean: rm -f $(OBJ) $(TARGET) ``` 上述 Makefile 设置了编译器、编译选项、链接选项,并定义了源文件和目标文件的关系。确保路径中没有空格,且所有依赖库(如 `wsock32`)都已正确链接 [^4]。 ### 总结 构建失败的原因可能包括路径问题、依赖缺失、编译器配置不当或源码兼容性问题。解决这些问题的方法包括检查路径、添加缺失的库、重新配置编译环境以及调整 Makefile 以适配库版本。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值