再探動態庫的應用
阿新 • • 發佈:2020-12-28
程式碼:
//file:addVec.c #include "vector.h" int gVal = 200; int gVal2 = 1; int addVec(int *xP, int *yP, int *zP, int Num){ for(int i = 0; i < Num; i++){ zP[i] = xP[i] + yP[i]; } gVal += Num; return gVal + gVal2; }//vector.h #ifndef vector_h #define vector_h int addVec(int *xP, int *yP, int *zP, int Num); void mulVec(int *xP, int *yP, int *zP, int Num); #endif //mulVector.c #include "vector.h" voidmulVec(int *xP, int *yP, int *zP, int Num){ for(int i = 0; i < Num; i++){ zP[i] = xP[i] * yP[i]; } return; } //testVec.c #include <stdio.h> #include "vector.h" int x[2] = {1, 2}; int y[2] = {3, 4}; int z[2]; extern int gVal; extern int gVal2;int main(int argc, char **argv) { addVec(x, y, z, 2); printf("z = [%d %d]\n", z[0], z[1]); return gVal + gVal2; }
編譯動態庫:gcc -shared -fPIC -o libVector.so addVec.c mulVec.c
用動態庫編譯:gcc -g -I. -L. -lVector testVec.o -o testVec
修改變數:LD_LIBRARY_PATH
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/.
echo $LD_LIBRARY_PATH 結果::/home/nication/WORKM/studyCode/gnuC/chapter04/lib/shared2/. 沒有問題
export LD_LIBRARY_PATH
執行:./testVec
結果:z = [4 6]
檢視返回變數:echo $? 值為203 正常OK