前提:
我需要打一个libpqc_kyber.so文件,给我的example_kem.c使用。
1.关于动态包查找
如果有.so文件找不到或者无法链接的问题,有以下三个解决办法。
- 将libpqc_kyber.so放入本机的默认lib目录下,我这里是/usr/lib/x86_64-linux-gnu,然后直接使用。
gcc example_kem.c -o example_kem -lpqc_kyber
./example_kem - 指定绝对路径使用,比如我的libpqc_kyber.so放在/mnt/d/code/pqc/example/example_kyber中则
gcc example_kem.c -o example_kem -Wl,-rpath=/mnt/d/code/pqc/example/example_kyber -L/mnt/d/code/pqc/example/example_kyber -lpqc_kyber
./example_kem
这里-L的作用是指定在编译和链接时查找库文件的目录,-Wl,-rpath的作用是指定运行时动态链接器查找共享库的路径 - 设置临时环境变量使用
gcc example_kem.c -o example_kem -L. -lpqc_kyber
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
./example_kem
注意临时环境变量在关闭命令行