我继承了一个有makefile的代码,但是到目前为止我还不能在linux服务器上运行它。编译器的主要抱怨是无法加载libgmp.so.3
:error while loading shared libraries: libgmp.so.3
。我知道这个服务器上存在libgmp.so.10
,但我想知道MaX文件的哪一部分需要更改,以便编译器查找libgmp.so.10
而不是libgmp.so.3
。
OPTFLAG = -O2 -Wall -fPIC -fexceptions -DNDEBUG
LDFLAGS = -O2 -Wl,-no_compact_unwind -DNDEBUG -lm -pthread
COMPILER = gcc ${OPTFLAG}
LINKER = gcc ${LDFLAGS}
# CPLEX directory
CPLEX_HOME = /opt/ibm/ILOG/CPLEX_Studio1263/cplex
CPLEX_INC = ${CPLEX_HOME}/include/
CPLEX_LIB = ${CPLEX_HOME}/lib/x86-64_linux/static_pic/ -lcplex
# Compile the main file
code: code.c
${COMPILER} -c code.c -o code.o -I${CPLEX_INC}
${LINKER} -o code code.o -L${CPLEX_LIB}
clean::
rm -f *.o
rm -f ${LIB}/*.o
rm -f *~
rm -f ${SRC}/*~ ${INCLUDE}/*~
最佳答案
您需要从源代码重建任何程序或库使用的libgmp.so.3
。能否提供make
运行的确切命令及其产生的错误消息?
编辑这里的问题是,系统安装了ibm cplex软件的一个版本,它带有自己的gcc二进制文件,并且gcc二进制文件使用libgmp.so.3
。解决这一问题的最简单方法是将cplex软件升级到支持所用操作系统的版本,或者在为其编写的操作系统上使用软件(即,一些真正的旧版本,实际上是libgmp.so.3
)。