一部のCコードを正しくコンパイルするには、特定のファイルを見つけるためにフォルダをエクスポートする必要があります。
コマンドラインで初めて実行したとき
export LD_LIBRARY_PATH=/bin/path../version/:$LD_LIBRARY_PATH
これにより、Cコード実行可能ファイルが機能します。をエクスポートしないと、LD_LIBRARY_PATH
Cパッケージが必要なファイルを見つけることができないため、実行可能ファイルは失敗します。
exectuable: error while loading shared libraries: file1.so: cannot open shared object file: No such file or directory
ここでbashスクリプトでこのコードを実行したいと思います。これは私のbashスクリプトですrun_stuff.sh
。
#!/bin/bash
source ~/.bash_profile
export LD_LIBRARY_PATH=/bin/path../version/:$LD_LIBRARY_PATH
path/to/executable/executable
上記のエラーにより、この操作は失敗します。私はそれ以来試しました
echo "export LD_LIBRARY_PATH=/bin/path../version/:$LD_LIBRARY_PATH"
私が追加したbashスクリプトから
export LD_LIBRARY_PATH=/bin/path../version/:$LD_LIBRARY_PATH
以内に~/.bash_profile
。それでも動作しません。 Cコードがファイルを見つけることができません。
bashスクリプトからフォルダを正しくエクスポートする方法は?
答え1
1
国内にエクスポートできます。
#!/bin/bash
LD_LIBRARY_PATH=/bin/path../version/:$LD_LIBRARY_PATH path/to/executable/executable
使用はプロセスのVARを設定してエクスポートしますVAR=value cmd
。cmd
2
2段階にエクスポート
#!/bin/bash
LD_LIBRARY_PATH=/bin/path../version/:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
path/to/executable/executable
これが私がシナリオでやった方法です。 (これはマニュアルページの内容と矛盾します。)
エクスポート[-fn] [名前[=単語]] ...
変数名の後に= wordが続く場合、変数の値はwordに設定されます。