安装没有root权限的共享对象

时间:2011-12-20 21:57:39

标签: object makefile root shared

我在下面创建了makefile:

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 个答案:

答案 0 :(得分:1)

尝试制作最后一部分:

run:
        LD_LIBRARY_PATH=. ./allocator

可替换地:

run:
        export LD_LIBRARY_PATH=.; \
        ./allocator

问题是,当你有一个目标的多行命令时,make会在自己的shell中运行每一行。因此,在一行(在一个shell中)设置的环境变量不会被为其他行运行的shell继承。解决方案是将所有内容放在一行(因此它转到shell的一个实例),或者将命令作为单行写入,或者使用行继续。