paylaşılan barındırmada çalışan aapt binary


1

Aapt ikili dosyasını paylaşılan hosting programımda çalıştırmak istiyorum, böylece bazı betiklerde kullanabilirsiniz. Aapt'ı locally ( sudo apt install aapt) ile yükledim ve bunları home/user/binexecute bit setiyle paylaşılan barındırmadaki klasörüme yükledim . Ssh ile çalıştırdığımda bu hatayı alıyorum:

aapt: error while loading shared libraries: libaapt.so.0: cannot open shared object file: No such file or directory

Böylece hangi kütüphane dosyalarının yerel olarak aapt için gerekli olduğunu buldum, toplarım ve zipledim. Onları yükleyin ve home/user/libklasöre çıkarın .

zip -j libs.zip $(ldd /usr/bin/aapt | grep "=>" | sed -e "s/(.*//" -e "s/.*=> //")

Artık paylaşılan barındırmada (veya bu konuda başka bir komutta) aapt çalıştırdığımda, bir segmentasyon hatası alıyorum.

Bu yüzden tüm kütüphane dosyalarını home/user/lib/aapttaşıyorum ve aapt yürütüyorum. Eksik bir lib dosyası için her hata home/user/libaldığımda, aşağıdakileri alana kadar eksik kütüphaneyi tekrar klasöre taşırım :

lib:
aapt/
lib7z.so
libaapt.so.0
libandroidfw.so.0
libbacktrace.so.0
libbase.so.0
libcutils.so.0
liblog.so.0
libpng16.so.16
libunwind.so.0
libutils.so.0
libziparchive.so.0

lib/aapt:
libc.so.6*
libexpat.so.1
libgcc_s.so.1
libm.so.6
libpthread.so.0*
libstdc++.so.6
libz.so.1

Şimdi aapt çalıştırdığımda aşağıdaki hataları alıyorum:

aapt: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by aapt)
aapt: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by aapt)
aapt: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /home/user/lib/libaapt.so.0)
aapt: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /home/user/lib/libaapt.so.0)
aapt: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /home/user/lib/libaapt.so.0)
aapt: /lib64/libc.so.6: version `GLIBC_2.17' not found (required by /home/user/lib/libutils.so.0)
aapt: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /home/user/lib/libutils.so.0)
aapt: /lib64/libz.so.1: version `ZLIB_1.2.9' not found (required by /home/user/lib/libpng16.so.16)
aapt: /lib64/libz.so.1: version `ZLIB_1.2.3.4' not found (required by /home/user/lib/libpng16.so.16)
aapt: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /home/user/lib/libpng16.so.16)
aapt: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by /home/user/lib/libandroidfw.so.0)
aapt: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /home/user/lib/libandroidfw.so.0)
aapt: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /home/user/lib/libandroidfw.so.0)
aapt: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /home/user/lib/libandroidfw.so.0)
aapt: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by /home/user/lib/liblog.so.0)
aapt: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.5' not found (required by /home/user/lib/liblog.so.0)
aapt: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /home/user/lib/liblog.so.0)
aapt: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /home/user/lib/liblog.so.0)
aapt: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /home/user/lib/liblog.so.0)
aapt: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /home/user/lib/libcutils.so.0)
aapt: /lib64/libc.so.6: version `GLIBC_2.15' not found (required by /home/user/lib/libcutils.so.0)
aapt: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /home/user/lib/libbacktrace.so.0)
aapt: /lib64/libc.so.6: version `GLIBC_2.17' not found (required by /home/user/lib/libbacktrace.so.0)
aapt: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /home/user/lib/libbacktrace.so.0)
aapt: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /home/user/lib/libbacktrace.so.0)
aapt: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /home/user/lib/libziparchive.so.0)
aapt: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /home/user/lib/libziparchive.so.0)
aapt: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /home/user/lib/libbase.so.0)
aapt: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /home/user/lib/libbase.so.0)
aapt: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /home/user/lib/libbase.so.0)
aapt: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /home/user/lib/libbase.so.0)
aapt: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /home/user/lib/libunwind.so.0)
aapt: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /home/user/lib/lib7z.so)
aapt: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /home/user/lib/lib7z.so)
aapt: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /home/user/lib/lib7z.so)

Libc.so.6 veya libstdc ++. So.6 dosyalarını lib klasörüne taşırsam, varsaydığım ana bilgisayar kitaplığı dosyalarına müdahale ettikleri için segmentasyon hatasını tekrar alıyorum.

Burası benim sıkışıp kaldığım ve sorum şu: aapt ikili dosyasını aapt klasöründeki farklı kütüphanelere nasıl işaret edebilirim?

Tercihlerimin kapsamı dışında olduğundan statik bir ikili olarak herhangi bir yeniden derleme yapmak istemiyorum ve şimdilik bu şekilde kalmasını istiyorum.


Ne haber Bay Cryptic Sponge Bob .... Bu bir x86 vs x64 tipi sorun olabilir mi? Zaten dikkate almadıysanız ya da dikkate almadıysanız, belki de bu doğrulamak için basit bir görünüme değer.
Pezevenk Suyu BT'de

Ana bilgisayar x64 ve iş istasyonu x64'tür. Uname -mpi yazmak aynı sonucu verir: x86_64 x86_64 x86_64
5p0ng3b0b Saat

Sanırım ana bilgisayar ve istemci CPU mimarisinin yanı sıra kitaplıklardan da bahsediyordum. Bazı sorunların, x86 kitaplıklarının da (veya x64) tam tersi olduğunda (eğer varsa / uygulanabilirse / vb.) Mevcut olmasını sağlayarak çözdüğümü okudum. de yardımcı olur. . . unix.stackexchange.com/questions/24811/…
Pezevenk Suyu

Yanıtlar:


0

Yerel sisteminizden yüklediğiniz dosyaları LD_LIBRARY_PATHiçeren bir dizini ayarlamanız gerekir .so.

user@host:~$ export LD_LIBRARY_PATH=/home/user/lib/ /path/to/aapt ...

Bunları aaptbulup bulamadığını kontrol etmek için kontrol edebilirsiniz.ldd /path/to/appt/binary

Ancak, aynı zamanda bazı sistem .sodosyalarının eşleşmeyen sürümleriymiş gibi görünüyor , bu nedenle yerel sisteminizden yapılacak bir yükleme işlemini bulabileceğiniz LOT dosya daha olabilir.


LD_LIBRARY_PATH zaten / home / user / lib olarak ayarlanmış. Herhangi bir kütüphane dosyasını buraya yerleştirirsem ya da yola başka bir klasör eklersem, ana sistem bu klasörleri mevcut seçeneklere göre öncelikli olarak alır; Bir programın kütüphaneleri için belirli bir klasöre bakmak için derlenmesinin mümkün olduğunu biliyorum, fakat derlemek seyahat etmek istediğim yol değil, statik bir sürüm de olabilir.
5p0ng3b0b

@ 5p0ng3b0b bu nedenle lib yolunuzu bir kabuk örneğinde değiştirir ve programınızı çalıştırırsınız - sistemin geri kalanı varsayılan olarak kalır. İyi şanslar!
ivanivan

Ben ssh kabuk kullanıyorum. LD_LIBRARY PATH değiştirildikten sonra aapt çalışırken hala seg hata alıyoruz. Bu şekilde çalışsa bile, diğer komutlar komut dosyasında hatayı segmente ederdi. Şimdi ermin kullanarak statik bir ikili çalışmayı başardım ama sadece 30 gün sürecek. Ben sebat edeceğim!
5p0ng3b0b

0

Sonunda çalışmasını sağladım! Başlangıçta apk'yi açmak için apktool komutunu kullanan ve gerekli olan bilgileri (apk etiketi ve sürüm numarası) çıkarmak için kullanılan bir komut dosyası yazdım, ancak işlevsel olmasına rağmen işlem oldukça yavaştı, apk başına yaklaşık 5 ya da 6 saniye sürdü. Daha sonra buradaki talimatları izleyerek ana bilgisayarda çalışan aapt'i elde etmek için bir perl modülü keşfettim .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.