【发布时间】:2017-11-30 16:23:04
【问题描述】:
我一直在尝试编译一个带有 main 方法的 C 源文件 (driver.c) 和一个动态库 (libhello.so) 文件,该文件包含 main 方法中使用的函数的所有实现。
我用
制作.so文件gcc -shared -o libhello.so -fPIC hello.c
它编译正常并按预期返回目录中的文件。
然后我尝试用动态库libhello.so编译driver.c文件
gcc driver.c libhello.so -o driver
它可以毫无怨言地编译,当我尝试运行可执行的“驱动程序”时会出现问题。我收到以下错误:
./driver: error while loading shared libraries: libhello.so: cannot open shared object file: No such file or directory
我很困惑,因为该文件实际上就在它正在编译的目录中。有人可以为我解释一下吗?
【问题讨论】:
-
在使用 driver.c 编译时提供 ./libhello.so,因为它是用户定义的库。你把 libhello.so 复制到 /lib 目录了吗?
-
我用 ./libhello.c 编译,它运行良好。谢谢!
-
"Icompiled with ./libhello.c" 这个当然不用libhello.so你已经建好了
-
@user3629249 说 libhello.so 完全没问题,它的作用与 -L 完全相同。 -lhello。
标签: c gcc shared-libraries