Стоит ubuntu 14.04 LTS 64 всё нормально работает.
Проблемма возникла на ровном месте:
Было так запускаю файл aapt (из android sdk) и он пишет не могу найти libc++.so
Начинаю разбираться почему на одной машине работает на другой нет.
На первой файл лежит просто в директории пользователя
на другой смонтирован в папку командой mount --bind
Команда strace ./aapt 2>log
Показывает очень забавный результат.
В первом случае происходит запуск aapt и поиск библиотек по разным путям рядом с исполняемым файлом.
В результате находит рядом с собой папку lib и там нужные либы.
НО! Во втором происходит странное — вместо поиска рядом ищет в корне файловой системы:
[spoiler]
Рабочий вариант
execve("./aapt", ["./aapt"], [/* 78 vars */]) = 0
[ Process PID=3055 runs in 32 bit mode. ]
brk(0) = 0xfffffffff81cf000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff7615000
readlink("/proc/self/exe", "/home/user/bin/android-sdk-linux"..., 4096) = 56
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff7614000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/home/user/bin/android-sdk-linux/build-tools/23.0.2/../lib/tls/i686/sse2/cmov/libc++.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/home/user/bin/android-sdk-linux/build-tools/23.0.2/../lib/tls/i686/sse2/cmov", 0xffefd490) = -1 ENOENT (No such file or directory)
open("/home/user/bin/android-sdk-linux/build-tools/23.0.2/../lib/tls/i686/sse2/libc++.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/home/user/bin/android-sdk-linux/build-tools/23.0.2/../lib/tls/i686/sse2", 0xffefd490) = -1 ENOENT (No such file or directory)
open("/home/user/bin/android-sdk-linux/build-tools/23.0.2/../lib/tls/i686/cmov/libc++.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
...
open("/home/user/bin/android-sdk-linux/build-tools/23.0.2/lib/libc++.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0\0\0\0004\0\0\0"..., 512) = 512
...
На другой машине где файлы андройда смонтированы и не находит
execve("./aapt", ["./aapt"], [/* 40 vars */]) = 0
[ Process PID=3797 runs in 32 bit mode. ]
brk(0) = 0xfffffffff825f000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff76e2000
readlink("/proc/self/exe", "/build-tools/23.0.2/aapt", 4096) = 24
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/build-tools/23.0.2/../lib/tls/i686/sse2/cmov/libc++.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/build-tools/23.0.2/../lib/tls/i686/sse2/cmov", 0xffc0ab40) = -1 ENOENT (No such file or directory)
... еще несколько десятков вариантов безуспешного поиска
stat64("/build-tools/23.0.2/lib", 0xffc0ab40) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=133265, ...}) = 0
mmap2(NULL, 133265, PROT_READ, MAP_PRIVATE, 3, 0) = 0xfffffffff76c1000
close(3)
...
ищет в корне /build-tools. виноват скорее всего вызов readlink хотя дальше не копал.
[/spoiler]
Добавление LD_LIBRARY_PATH=lib помогает, но остаётся осадок.
Как linux убедить не рыться там где не надо?
Никто с таким не сталкивался?