2011-12-20 96 views
0

我做了下面的生成文件:安裝沒有root權限的共享對象

CC = gcc 

CCFLAGS = -Wall -L. -lall -ldl -g 

LIBFLAGS = -shared -fPIC -Wall 

SRC = tema4.c 

PROGRAM = allocator 

LIB = liball.so 

LIBSRC = liballoc.c 

build: 

gcc -fPIC -c liballoc.c 

ld -shared -soname liball.so.1 -o liball.so.1.0 -lc liballoc.o 

ldconfig -v -n . 

ln -sf liball.so.1 liball.so 

$(CC) -o $(PROGRAM) $(SRC) $(CCFLAGS) 

export LD_LIBRARY_PATH=. 

run: 

    export LD_LIBRARY_PATH=. 

    ./allocator 

clean: 
rm -f $(PROGRAM) core *~ 

我運行命令make,然後我嘗試運行程序,但它似乎無法打開共享對象liball.so(沒有這樣的文件或目錄)

我工作在Ubuntu 11.10和我沒有root權限

回答

1

嘗試使最後一部分:

run: 
     LD_LIBRARY_PATH=. ./allocator 

或者:

run: 
     export LD_LIBRARY_PATH=.; \ 
     ./allocator 

的問題是,當你有一個目標的命令的多條線路,使運行在自己的殼每一行。因此,設置在一行(在一個shell中)的環境變量不會被其他行的shell所繼承。解決方法是將所有內容放在一行中(所以它轉到一個shell的一個實例),可以將該命令寫入單行或使用行延續。

相關問題