为何GCC无法识别带数字后缀的.so共享库文件?
GCC无法识别带数字后缀的共享库问题
当共享库文件以数字后缀(如.so.x.x)结尾而非仅.so时,GCC无法找到该库。共享库文件名通常包含主版本号和次版本号两个数字后缀。
原库文件位置
/nix/store/85j54v9a4jg98g6281fdxdvig90m1ywi-msodbcsql17-17.7.1.1-1/lib/libmsodbcsql-17.7.so.1.1
首次尝试操作及错误
执行以下命令:
mkdir /tmp/mslib cp /nix/store/85j54v9a4jg98g6281fdxdvig90m1ywi-msodbcsql17-17.7.1.1-1/lib/libmsodbcsql-17.7.so.1.1 /tmp/mslib gcc -L/tmp/mslib -lmsodbcsql-17.7
得到错误输出:
/nix/store/a4mmjm3bblxwp8h53bcfx3dly80ib0ba-binutils-2.35.1/bin/ld: cannot find -lmsodbcsql-17.7 collect2: error: ld returned 1 exit status
修改库文件名后的尝试
将库文件复制为不带数字后缀的版本:
cp /nix/store/85j54v9a4jg98g6281fdxdvig90m1ywi-msodbcsql17-17.7.1.1-1/lib/libmsodbcsql-17.7.so.1.1 /tmp/mslib/libmsodbcsql-17.7.so gcc -L/tmp/mslib -lmsodbcsql-17.7
输出结果:
/nix/store/a4mmjm3bblxwp8h53bcfx3dly80ib0ba-binutils-2.35.1/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/Scrt1.o: in function `_start': (.text+0x20): undefined reference to `main' collect2: error: ld returned 1 exit status
此次链接器成功找到库!
GCC版本信息
执行命令:
gcc --version
输出:
gcc (Debian 8.3.0-6) 8.3.0
内容的提问来源于stack exchange,提问作者Daniil Iaitskov
相关产品推荐
相关产品推荐

