Я пытаюсь создать общую библиотеку и попробовать ее загрузить.Общие библиотеки с G ++ в Linux
Я создал файл заголовок 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
После этого Я написал пример кода для загрузки, который так
#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/folder, но не повезло.
Любая помощь будет оценена по достоинству.
Я не думаю, что нет пространства между '-L' и' '.' так -L.' вместо' -L .'. (то же самое с '-I'). – Galik