已有的可执行的gcc命令 编译写入 makefile 文件要怎么写?

打砖人 2018-10-18 10:13:03
请大神指导新手!!我的gcc 编译想写一个makefile 文件,我自己的怎么都会有错!我的 gcc 编译是这样写的!
g++ -Wall -std=c++11 -pthread -shared -fPIC -I /usr/local/jdk1.6/include/ -I /usr/local/jdk1.6/include/linux/ -I /usr/local/ssl/include/ -I /home/www/openssl-1.0.2h/include/ -I /usr/local/src/hxdec/jni_20181008/ HxDecMsg_JNI.cpp icinfo_file.cpp icinfo_decrypt.cpp icinfo_header.cpp sm4.cpp DeBase64.cpp HxSm2Encrypt.cpp HxCertificate.cpp HxParam.cpp IParamIn.cpp -L /usr/local/ssl/lib/ -lssl -lcrypto -L /usr/local/lib64/ -ljsoncpp -o libHxDecMsg.so 请大神指导生成一个makefile文件的写法!我的目的是生成一个动态库 libHxDecMsg.so !
...全文
381 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
打砖人 2018-10-26
  • 打赏
  • 举报
回复
谢谢,问题解决,下面附上我自己用上的代码
VPATH := math:.
CC := g++
CFLAGS :=-Wall -std=c++11 -O2 -shared -fPIC
TARGET := libHxDecMsg.so
INCLUDES:=-I. -I. -I /usr/local/jdk1.6/include/ -I /usr/local/jdk1.6/include/linux/ -I /usr/local/ssl/include/ -I /home/www/openssl-1.0.2h/include/ -I /usr/lib64/
CLIBS := -L /usr/local/ssl/lib/ -lssl -lcrypto -L /usr/local/lib64/ -ljsoncpp
SRCS :=$(wildcard *.cpp)
OBJS :=$(patsubst %cpp, %o, $(SRCS))
all : $(TARGET)
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) $(OBJS) -o $@ $(CLIBS)
%.o:%.cpp
$(CC) -c -pthread $(INCLUDES) $(CFLAGS) $^ -o $@
clean:
rm -rf *.o $(TARGET) $(OBJS)
使用成功!
fly 100% 2018-10-19
  • 打赏
  • 举报
回复
-I 加路径进去
  • 打赏
  • 举报
回复
.PHONY: example
BIN_TARGET ?= libHxDecMsg.so

CC = g++

CFLAG = -Wall -std=c++11
INCLUDE = /usr/local/jdk1.6/include \
/usr/local/jdk1.6/include/linux \
/usr/local/ssl/include \
/home/www/openssl-1.0.2h/include \
/usr/local/src/hxdec/jni_20181008

LIBFLAG = -pthread -shared -fPIC \
-lssl -lcrypto -ljsoncpp
LIB = /usr/local/ssl/lib \
/usr/local/lib64

SRCS = HxDecMsg_JNI.cpp \
icinfo_file.cpp \
icinfo_decrypt.cpp \
icinfo_header.cpp \
sm4.cpp DeBase64.cpp \
HxSm2Encrypt.cpp \
HxCertificate.cpp \
HxParam.cpp \
IParamIn.cpp

OBJS = $(SRCS:.cpp=.o)

all: $(BIN_TARGET)

$(BIN_TARGET): $(OBJS)
$(CC) $(CFLAG) -I$(INCLUDE) $(LIBFLAG) -L$(LIB) \
-o $(BIN_TARGET) $(OBJS) -Wl,-soname='basename $(BIN_TARGET)'

clean:
rm -r $(OBJS) $(BIN_TARGET)


这是我大致写的Makefile,你可以尝试一下!
打砖人 2018-10-18
  • 打赏
  • 举报
回复
我尝试了一下!你的 BIN_TARGET 没有指定内容,我默认加上了名字,现在有个问题就是我们引用的库,-lssl -lcrypto -ljsoncpp 是未发现,我查看这个引用的库是一个静态[/img]库 ,libssl.a, libcrypto.a ,libjsoncpp.a,这三个库文件,make的时候提示没有文件 [img=https://img-bbs.csdn.net/upload/201810/18/1539849125_14790.png] ,不知道有没有什么方法解决?

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧