I'm a first year computer science student following a course on (amongst others) Makefiles. For our first assignment, we had to create a shared library and link against it.
I have the following setup:
- A folder
hw1
containing the foldersapp
andlib
. - Inside
lib
is a file calledlibmine.so
, the library I want to link against. - Inside
app
, there are two files:test.cpp
and aMakefile
. The former uses thelibmine
library.
The Makefile
is as follows (in the file itself, indentation etc. is correct):
all: test
test: test.cpp
g++ -Wall -o test -L../lib -I../lib/include test.cpp -lmine
However, when running test
, I get the infamous `libmine.so: cannot open shared object file' error.
I believe this has something to do with exporting LD_LIBRARY_PATH
. I have tried doing so (export LD_LIBRARY_PATH=$[very long relative path to the lib folder]
), but I want to do this in my Makefile
. Additionally, I don't want the path to be relative, as my teachter should be able to open the file when I send it to him (so I think it should be something like ../lib/libmine.so
).
I looked at various StackOverflow posts, such as this one, but none seemed to answer this specific question (either it was a different setup or the solution simply didn't work). By the way: putting the line export LD_LIBRARY_PATH=../lib
right under test: test.cpp
and before the g++
command did not do anything.
Any help is much appreciated :)