を実行Couldnot以下れるコードは、私はここに、GNUコンパイラで静的ライブラリと共有ライブラリをやってみましたこんにちは、動的にリンクされたプログラム
次のライブラリ calc_mean.c
double mean(double a, double b){
return (a+b)/2;
}
のコードです以下は、今私は、次のコマンドを使用して静的ライブラリを作成し始めた私のヘッダファイルcalc_mean.h
double mean(double,double);
ある
まず、calc_mean.cは、アーカイバ(AR)はオブジェクトファイルcalc_meanのうち静的 ライブラリ(名前libmean.a)を生成するために呼び出される、オブジェクトファイルに
gcc -c calc_mean.c -o calc_mean.o
秒になっています。その使用-fPICオプション 共有ライブラリのために必要である独立したコードを作成する前に、O
ar rcs libmean.a calc_mean.o
第三、共有ライブラリを作成
今共有ライブラリが#include <stdio.h>
#include "calc_mean.h"
int main(int argc, char* argv[]){
double v1,v2,m;
v1 = 5.2;
v2 = 7.9;
m=mean(v1,v2);
printf("The mean of %3.2f and %3.2f is %3.2f\n",v1,v2,m);
return 0;
}
最終的に私はその静的ライブラリに対してプログラムをリンクし、次のように最終的にライブラリを使用して、私のmain.cファイルがある次のコマンドラインに
gcc -shared -Wl,-soname,libmean.so.1 -o libmean.so.1.0.1 calc_mean.o
を使用して作成され
statically_linked.exeを生成しました
gcc -static main.c -L. -lmean -o statically_linked
動的にリンクすると、テッド私は、次のコマンドを使用して動的にリンクされたプログラムを実行するコマンドを使用するときに今、IAMのはLD_LIBRARYは、内部または外部コマンドとして認識されていないというエラーメッセージが出て、次のコマンド
gcc main.c -o dynamically_linked -L. -lmean
とdynamically_linked.exe、実行可能なプログラムまたはバッチファイル
LD_LIBRARY_PATH=.D:\c\project3./dynamically_linked
どのように動的リンクプログラムを実行できますか?
私はcalc_mean.cとcalc_mean.hをmain.cが見つからない別のフォルダに残しておき、ライブラリを作成して別のフォルダのmain.cにリンクしたいのですが、それは実行されますか?私は途中で初心者です。 – jenny
コンパイル時に '-I'フラグを使用して、正しいインクルードパスを渡すだけで、ヘッダ(' .h')をどこにでも置くことができます。同様に、リンク中に '-L'フラグを使って正しいライブラリ検索パスを渡すだけで、ライブラリを保存(インポート)することができます。 –
ええええええと...... – jenny