我继承了一个有makefile的代码,但是到目前为止我还不能在linux服务器上运行它。编译器的主要抱怨是无法加载libgmp.so.3error 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)。

10-01 22:37