GDB

  • foo.c
#include <stdio.h>

int foo(int a, int b)
{
    int s = a + b;
    printf("%d\n", s);
    return s;

}
  • main.c
extern int foo(int a, int b);
int main(int argc, char* argv[])
{
    int s = foo(10, 20);
    return s;
}
  • Makefile
all: so main
so:
    gcc -g foo.c -shared -fPIC -o libfoo.so
main:
    gcc -g main.c -L./ -lfoo -o test
clean:
    rm -f test *.so

實驗

make
mkdir src lib
mv *.c src
mv libfoo.so

預期使用 directory 指定程式碼路徑 使用 solib-absolute-prefix & solib-search-path 指定lib 路徑 可使最後失敗必須用set env LD_LIBRARY_PATH 才可以

gdb ./test
directory ./src
set env LD_LIBRARY_PATH ./lib/

問題

1.想知道為什麼 solib-absolute-prefix & solib-search-path 指定lib 不行?

  1. 下面四個指令有什麼差異? set solib-absolute-prefix
    set solib-search-path
    set env LD_LIBRARY_PATH
    set debug-file-directory