「make」をコンパイルするとエラーメッセージが表示されます
$ make
g++ -fopenmp -o lang.test main.o -I../../../include/Lheader -I../../../include -L../../../lib/ -llmi -lblas -lboost_regex -lpthread -lleveldb
/usr/bin/ld: ../../../lib//liblmi.a(LMInterface.o): unrecognized relocation (0x2a) in section `.text'
/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
上記の問題の解決策が見つかりません。
GCCバージョンとldバージョンは次のようなものです。
$ gcc --version
gcc (Ubuntu 5.4.1-2ubuntu1~14.04) 5.4.1 20160904
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ ld --version
GNU ld (GNU Binutils for Ubuntu) 2.24
Copyright 2013 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) a later version.
This program has absolutely no warranty.
このコンパイルの問題を修正する方法は?
X86-64での再配置42はR_X86_64_REX_GOTPCRELX
。これらの再配置は使用されます binutils 2.26以降で実装された最適化のために 。
Binutilsバージョンをアップグレードするか、現在のツールチェーンバージョンで使用するライブラリを再コンパイルする必要があります。
GCCバージョンをアップグレードする必要があります。これを行うには、次のコマンドを実行します。
yum install centos-release-scl -y
yum install devtoolset-7 -y
scl enable devtoolset-7 bash