2016-08-17 7 views
0

の2つのバージョンを探している、私はそれの2つのバージョンを望んでいる実行可能ファイルを取得します正しい方向は?これは私にとって意味をなさない!、私の実行ファイルがそれ

背景:sudo apt-get install libarmadillo-devを経て、その後、私は特定のパラメータ(64ビット・ワードが有効)でそれを構築するために必要な実現libarmadillo私が最初にインストールので、私はそれから、最新バージョンをダウンロードし設定して/インストールメイクsudo apt-get remove libarmadillo-devを経由して、それをアンインストールそれ。私のシステムにはlibarmadilloのバージョンが1つしかないと思われます。通常の場所には古いライブラリはありません。

おかげ

EDIT:私のMakefileがある

CC= g++ 
CFLAGS= -Lcontrib/armadillo-7.400.1 -L/usr/include -Lcontrib/mlpack-2.0.1/build/lib -fpermissive -std=c++11 -O0 -g -Wall 
LDFLAGS= -lmlpack -larmadillo 

LDDの詳細な出力が面白いです、私はと思いますか? (libarmadillo.so.7のための依存性を示しています)

$ ldd -v ./a.out | grep armadillo 
$ libarmadillo.so.7 => /usr/lib/x86_64-linux-gnu/libarmadillo.so.7 (0x00007fd5e29a0000) 
$ libarmadillo.so.4 => not found 
$ /usr/lib/x86_64-linux-gnu/libarmadillo.so.7: 

後者セクションでは、次のとおりです。

/usr/lib/x86_64-linux-gnu/libarmadillo.so.7: 
    ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2 
    libc.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libc.so.6 

冗長出力、の「行方不明」libarmadillo.so.4の言及はありませんいます私はかなり奇妙なことを見つける。

+0

'a.out'ビルドはどうでしたか?あなたのmakefileや設定ファイルには何が入っていますか? – wasthishelpful

+0

オブジェクトは、g ++を使用して、 'CFLAGS = -Lcontrib/armadillo-7.400.1 -L/usr/include -fpermissive -std = C++ 11 -O0 -g -Wall'と' LFLAGS = -larmadillo'でコンパイルされます。私はlddの冗長出力を質問に添付しました... – ricky116

答えて

-1

Linuxは、1つのダイナミックライブラリの多くのシンボリックリンクを作成することがあります。私は理由は分からないが、それには不都合はない。したがって、次のような新しいシンボリックリンクを作成することができます:ln -s path_to_my_so_lib/my_lib.so /usr/lib/x86_64-linux-gnu/libarmadillo.so.4

0

私はそれを理解したと思いますが、結果は特に心地よくはありません。

mlpackを再インストールしました。これはlibarmadilloに依存し、再構築され、libarmadillo.so.4の要件はなくなりました。

私が起こったと思うプロセスが私です:

  • 古いバージョンで構成libmlpackをインストールlibarmadillo
  • のインストール古いバージョン
  • 私はlibarmadilloの新しいバージョン、libarmadillo古いので、アンインストールを必要として実現し、新しいものをインストールしました。 cmakeの/ を作る使用してますが、私の実行可能
  • make install
  • 今すぐ古いlibarmadilloを必要とするmlpackを指しているが、それはまた新しいlibarmadillo
  • を指しているされた実行可能ファイルを持っていなかったmlpackリビルト

make installが修復されたmlpackになると、私の問題は解決します。lddの冗長な出力にはなぜと表示されていたのですか?libarmadillo.so.4(つまり、古いライブラリにはlibmlpackからの依存関係があります)を探していましたか? - lddはこれを行う必要がありますか?

関連する問題