2014-10-02 2 views
1

공유 라이브러리를 만들고로드하려고합니다.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/폴더를 내보낼려고했지만 행운이 없다.

도움을 주시면 감사하겠습니다.

+0

시작 가정합니다. ('-I'와 동일). – Galik

답변

4

이름 바꾸기 cqueue.so ~ libcqueue.so.

-l 라이브러리 이름은 내가 -L`와`.` 그래서`-L.` 아니라 -L '보다는 .``사이에 공간을 생각하지 lib

+0

opps .. 내가 어떻게 그걸 놓칠 수 있지. 감사. –

관련 문제