공유 라이브러리를 만들고로드하려고합니다.Linux에서 G ++를 사용하는 공유 라이브러리
내가 헤더 파일 cqueue.h /*
* File: cqueue.h
* Author:
*
* Created on 2 October, 2014, 8:08 AM
*/
#include <iostream>
#include <cmath>
#ifndef CQUEUE_H
#define CQUEUE_H
class cqueue
{
private :
int *arr ,idx;
int ARR_LEN;
public :
int init(int len);
void insert (int item) ;
int mean() ;
} ;
#endif /* CQUEUE_H */
및 소스 파일 cqueue.cpp을 만든
는
#include <iostream>
#include <cmath>
#include "cqueue.h"
using namespace std;
int cqueue :: init(int maxsize){
arr = new int [ maxsize ];
for (int i = 0; i < ARR_LEN; i++)
{
arr[i]=0;
}
ARR_LEN=maxsize;
idx=0;
return 1;
}
void cqueue :: insert(int value)
{
arr[idx] = value;
if (idx == ARR_LEN - 1)
idx = 0;
else
idx++;
}
int cqueue :: mean()
{
int ret=0;
for (int i=0;i<ARR_LEN;i++) ret=ret+arr[i];
return ret/ARR_LEN;
}
나는 그 후 코드
g++ -fpic -g -c -Wall cqueue.cpp
g++ -shared -Wl-Wl,-soname,cqueue.so -o cqueue.so cqueue.o
다음으로 이렇게 구축 로드 할 샘플 코드를 작성했습니다.
나는 그것을 컴파일하려고 할 때 17,451,515, #include <iostream>
#include <cmath>
#include "cqueue.h"
using namespace std;
int main(void)
{
cqueue test;
test.init(2000);
int a;
for (int i = 0; i < 100000; i++)
{
test.insert(i);
a=test.mean();
}
cout<<a<<endl;
return 0;
}
, 내가
g++ -Wall -I . -L . sotest.cpp -o test -lcqueue
/usr/bin/ld: cannot find -lcqueue
collect2: ld returned 1 exit status
모든 코드는 같은 폴더에 다음과 같은 오류 얻고있다. 여기서 무엇이 잘못 될 수 있습니까? 나는 LD_LIBRARY_PATH =/home/current/폴더를 내보낼려고했지만 행운이 없다.
도움을 주시면 감사하겠습니다.
시작 가정합니다. ('-I'와 동일). – Galik