我只是看不出我在这里做错了什么:
问:在使用共享对象编译程序时,为什么g ++找不到我的库?
我试图在我的c ++程序中包含一个共享库:
g++ -fpic -c sha.cpp
g++ -shared -o libsha.so sha.o
g++ main.cpp -o main -L. -lsha
Run Code Online (Sandbox Code Playgroud)
其中sha.cpp和sha.h是库文件,main.cpp是我的程序.
我已尝试使用静态库,它可以找到:
g++ -static -c sha.cpp -o libsha.o
ar rcs libsha.a libsha.o
g++ main.cpp -o main -L. -lsha
Run Code Online (Sandbox Code Playgroud)
该平台是windows上的cygwin,这是输出:
rob@pc /cygdrive/c/src/a
$ g++ main.cpp -o shatest -L. -lsha
/usr/lib/gcc/i686-pc-cygwin/4.3.4/../../../../i686-pc-cygwin/bin/ld: cannot find -lsha
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
我已阅读所有论坛帖子,但图书馆在同一个文件夹中!
$ ls
libsha.so main.cpp sha.cpp sha.h sha.o
Run Code Online (Sandbox Code Playgroud)
我这样做的原因是,在另一个平台上,正在创建一个库,当一个对象被调用时,它可以工作,但是当构建第二个对象时应用程序崩溃.我正在做上面的简单测试!(烦恼不是那么简单).
源文件如下:
main.cpp中
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include "sha.h"
void *thread_one( void …Run Code Online (Sandbox Code Playgroud)