導入
関連ブログ
https://www.cnblogs.com/sunsky303/p/7731911.html
https://blog.csdn.net/wk_bjut_edu_cn/article/details/81735956
図書館
a) 静的ライブラリ
静的関数ライブラリは、プログラムが実行 (コンパイル) される前にターゲット プログラムに追加されます;
利点: 実行が速く、
リリースされたプログラムに静的ライブラリを提供する必要はありません。移植しやすい
短所:大きい
b) 動的ライブラリ 動的関数
ライブラリは、プログラム実行時に対象プログラムから動的に(一時的に)呼び出される
デメリット:動作が遅い
メリット:小さい
ライブラリ制作
静的ライブラリの作成:
(スタティック ライブラリ ファイルの命名方法は "libxxx.a"、ライブラリ名の前に "lib" を追加、サフィックスとして ".a"、"xxx" はスタティック ライブラリ名) 形式 xxxx.a a. gcc calcufuncs.c
-c
xxx.o ファイルを生成します
b. ar rcs libcalcufunc.a calcufuncs.o
xxx.o ファイルは xxx.a スタティック ライブラリ ファイルを生成します
動的ライブラリの作成:
(動的ライブラリの命名方法は静的ライブラリと同様で、接頭辞は「lib」と同じ、接尾辞は「.so」になります) 書式: gcc -shared ao bo -o
libxxx.so
例: gcc -shared -fpic calcufuncs.c - o libcalc.so
-shared ダイナミック ライブラリ
-fpic standard を生成するように指定します。fPIC オプションはコンパイル段階で機能します。このオプションは、オブジェクト ファイルを生成して位置に依存しないコードを生成するときに使用する必要があります。
図書館利用
静的ライブラリ:
gcc 計算機T.c -lcalcufunc -L ./ -o mainProStatic
-L: ライブラリのパスを指定
-l (小文字の L): ライブラリの名前を指定します (lib と .a を削除します)
-o: 生成された最終アプリケーションの名前を指定します
-L は、-L で指定されたパスからスタティック ライブラリを検索するように gcc コンパイラに指示します。デフォルトでは、/usr/lib /usr/local/lib から検索し、
現在のパスで使用します。/
動的ライブラリ:
gcc 計算機T.c -lcalc -L ./ -o mainProDy
libcalc.so は
動的ライブラリを参照し、動的ライブラリの場所を指定する方法
https://www.cnblogs.com/progamming/p/13043652.html
動的ライブラリを使用したプログラムライブラリは、実行するプログラムを指定し、LD_LIBRARY_PATH export LD_LIBRARY_PATH="/home/pi/back/test"
で指定されたパスでライブラリ ファイルを見つけます。環境変数
環境変数を利用する
仮設定:
ターミナルで:
export LD_LIBRARY_PATH="path of dynamic library"
例:
export LD_LIBRARY_PATH="/home/pi/mydir/test/dongtaiKu"
次に、ファイル (./mainProDong) を実行します。
別の問題:
このときの環境変数は一時的なものであり、別のウィンドウでファイルを実行することはできません.
環境変数と実行中のファイルをシェル ファイルにパッケージ化できます (これら 2 つのコマンドを同時に実行します)
export LD_LIBRARY_PATH= 「動的ライブラリのパス」
./mainProDong
共有スクリプトは実行権限を追加する必要があります: chmod +x start.sh
そして最後に ./start
注: ライブラリによってカプセル化された関数は機能関数であり、関数関数がカプセル化された後、必要なプログラムに移植されます。