Ketika mencoba menjalankan executable saya telah dikirim di Mac OS X, saya mendapatkan kesalahan berikut
dyld: Library not loaded: libboost_atomic.dylib
Referenced from: /Users/"Directory my executable is in"
Reason: image not found
Trace/BPT trap:5
Saya telah menginstal perpustakaan peningkatan dan mereka berada di /opt/local/lib
. Saya pikir masalahnya ada hubungannya dengan executable hanya mencari di direktori itu seperti ketika saya menempelkan 'libboost_atomic.dylib' di sana, tidak masalah lagi. Sayangnya kemudian mengeluh tidak dapat menemukan perpustakaan boost berikutnya.
Apakah ada cara mudah untuk memperbaikinya?
Jawaban:
Temukan semua perpustakaan pendorong:
dan untuk masing-masing
libboost_xxx.dylib
, lakukan:dan akhirnya verifikasi menggunakan
otool
lagi:Halaman manual:
otool
install_name_tool
EDIT Beberapa waktu yang lalu saya menulis skrip python (
copy_dylibs.py
) untuk menyelesaikan semua hal ini secara otomatis saat membuat aplikasi. Ini akan mengemas semua perpustakaan dari/usr/local
atau/opt/local
ke dalam bundel aplikasi dan memperbaiki referensi ke perpustakaan yang akan digunakan@rpath
. Ini berarti Anda dapat dengan mudah menginstal perpustakaan pihak ketiga menggunakan Homebrew dan mengemasnya dengan mudah.Saya sekarang telah membuat skrip ini publik di github .
sumber
DYLD_LIBRARY_PATH
untuk memodifikasi jalur pencarian. Jawaban yang lain telah mendapatkan ini.exefile
adalah singkatan dari file yang dapat dieksekusi yang Anda coba jalankan. Dalam kasus saya,otool -L /usr/local/bin/php
lakukan triknya.Di
General
tab target , ada bagian yang disebutFrameworks, Libraries, and Embedded Content
Klik pada
+
tanda, tambahkan yang diperlukanframework
dan crash itu teratasi.sumber
LC_ID_DYLIB
saya tidak perlu membuat symlink di usr / loca / opt! apakah ada cara untuk mencari tahu? : | Ini menyakitkan :(Ini bekerja untuk saya:
sumber
node
menggunakan homebrew. Mungkin instalasi lain mematahkan jalur simpul. Juga bekerja untuk saya.Setelah memutakhirkan Mac OS ke Mojave. Saya mencoba menginstal modul npm melalui
yarn
perintah yang saya dapatkan kesalahan:Diperbaiki dengan:
sumber
node --version
di sistem saya menghasilkan kesalahan yang sama. Menjalankan dua perintah di atas memecahkan masalah saya.brew cleanup
perintah, yang bagus untuk dilakukan kadang-kadang jika Anda ingin menyingkirkan versi lama.brew cleanup
kemudian diperbaiki.Bagi sebagian orang, ini bisa semudah mengatur jalur sistem untuk pustaka dinamis. Pada OS X, ini sesederhana mengatur
DYLD_LIBRARY_PATH
variabel lingkungan. Lihat:Apakah boleh menggunakan DYLD_LIBRARY_PATH di Mac OS X? Dan, apa algoritma pencarian pustaka dinamis dengan itu?
sumber
DYLD_LIBRARY_PATH
?DYLD_LIBRARY_PATH
. Solusi yang benar adalah dengan memasukkan pustaka non-standar dengan.app
dan pengguna tidak perlu melakukan apa pun. Namun, pengembang mungkin masih harus meretas jalur pemuat sesuai jawaban saya.Saya mendapatkan kesalahan ini ketika saya mencoba menginstal ruby 2.3.1 menggunakan rvm. Pertama-tama saya disuruh berlari
brew update
, yang saya lakukan, dan kemudian ketika saya mencoba berlarirvm install ruby-2.3.1
, saya menerima kesalahan dalam pertanyaan SO ini.Cara mengatasinya adalah menjalankan pertama kali
brew upgrade
, tampaknya sesuai dengan pertanyaan superuser.com ini , Anda harus melakukan keduanyabrew update
&&brew upgrade
. Setelah selesai, saya akhirnya bisa menginstal ruby 2.3.1.sumber
brew upgrade
hal itu. Ini bisa menjadi pengganggu besar bagi seluruh sistem seseorang. Sebaliknya, pisahkan apa yang perlu ditingkatkan dan tingkatkan itu saja.Anda dapat menggunakan perintah otool dengan opsi -L untuk executable, yang akan menampilkan di mana executable mengharapkan pustaka tersebut berada.
Jika path ke yang perlu diubah, gunakan perintah install_name_tool , yang memungkinkan Anda untuk mengatur path ke perpustakaan.
sumber
Sekarang Xcode telah memutakhirkan IDE mereka, mereka telah sedikit mengubah cara kerjanya.
Dulu dibagi menjadi bagian terpisah seperti yang ditunjukkan di atas dengan 'Binari Tersemat' dan 'Kerangka Kerja Tertaut dan Perpustakaan' sebagai bagian terpisah.
Sekarang, ini adalah satu bagian gabungan dengan drop-down di sebelah kanan untuk apa yang harus disematkan.
Ini membingungkan saya pada awalnya, tetapi masuk akal sekarang.
sumber
Saya sampai di sini mencoba menjalankan program yang baru saja saya kompilasi menggunakan CMake. Ketika saya mencoba menjalankannya, ia mengeluh mengatakan:
Saya menghindari masalah memberitahu CMake untuk menggunakan versi statis Boost, alih-alih membiarkannya menggunakan yang dinamis:
sumber
Jika Anda menggunakan Xcode 11 dan seterusnya:
Buka
General
tab dan tambahkan kerangka kerja diFrameworks, Libraries, and Embedded Content
bagian.Penting: Secara default mungkin ditandai sebagai
Do Not Embed
, ubah menjadiEmbed Without Signing
seperti yang ditunjukkan pada gambar dan Anda siap melakukannya.Untuk versi Xcode di bawah 11:
Cukup tambahkan kerangka kerja di
Embedded Binaries
bagian dan Anda selesai.Bersulang!
sumber
Untuk mengatasi kesalahan di bawah ini di Macbook Catalina 10.15.4 saya:
Saya menjalankan perintah di bawah ini dan menyelesaikan masalah di atas:
sumber
Saya memperbaiki masalah ini dengan menggunakan
Product > Clean Build Folder
( CommandShiftK), yang membuat bangunan bersih baru, benar-benar aneh.sumber
Anda dapat menggunakan
sudo install_name_tool -change
ubah jalur dylib dansudo install_name_tool -id
ubah nama dylibsumber
Saya memperbaikinya dengan
brew install libpng
sumber
Jika Anda menggunakan cmake, tambahkan
DYLIB_INSTALL_NAME_BASE "@rpath"
ke properti target:atau dalam target proyek perpustakaan dinamis Xcode -> Pengaturan Bangun set Dynamic Library Instal Nama Basis ke @rpath
sumber
jika Anda menggunakan virtualenv cukup hapus folder lingkungan Anda dan buat ulang dengan perintah ini
virtualenv --python=/usr/local/bin/python3 the_name_of_my_env
sumber
Bagi siapa pun yang datang ke halaman ini karena mereka mendapatkan kesalahan ini ketika mencoba untuk menghubungkan kerangka kerja pihak ketiga ke proyek mereka menggunakan Xcode 6.3.1, masalah yang saya temui adalah karena perpustakaan sedang dibuat dengan versi kompiler yang lebih lama menggunakan versi yang berbeda cepat. Satu-satunya cara untuk memperbaikinya bagi saya adalah membangun kembali kerangka itu.
Alasan lain Anda mungkin mendapatkan ini dinyatakan dalam dokumen teknis Apple ..
setel Embedded Content Contains Swift Code (EMBEDDED_CONTENT_CONTAINS_SWIFT) pengaturan bangunan ke YA di aplikasi Anda
Berikut ini tautan ke dokumen lengkap Apple yang menjelaskannya di sini
sumber
Untuk kerangka kerja saya, saya menggunakan subproyek Xcode yang ditambahkan sebagai submodule git.
Saya yakin saya mendapatkan kesalahan ini karena saya menandatangani kerangka kerja dengan Tim penandatangan yang berbeda dari aplikasi utama saya. (beralih tim untuk aplikasi; lupa beralih untuk kerangka kerja)
Solusi adalah tidak masuk dalam proyek kerangka kerja. Sebaliknya, di bagian aplikasi utama
Target > General > Frameworks, Libraries, and Embedded Content
, tandatangani kerangka kerja viaEmbed & Sign
.Jika saya memilih
Do not Embed
atauEmbed Without Signing
saya malah mendapatkan kesalahan:sumber
Xcode 11.1 & Swift 5.1
Perbaikan Cepat
Pertama-tama pastikan bahwa perpustakaan tambahan eksternal memiliki opsi embed dipilih di Tab Umum, Biner Tersemat.
Jika masih tidak berhasil ..
Ini terjadi karena Anda memiliki versi pustaka yang berbeda dan tak tertandingi.
Perbarui Pods
Penting: Periksa semua pustaka termasuk dalam Pengaturan Bangun -> pustaka dan daftar kerangka kerja dan Anda telah memberikan opsi untuk menyematkan di pabrikan
Hanya bekerja dengan luar biasa
sumber
Bagi siapa pun yang mengalami hal yang sama dengan pustaka atau paket yang berbeda, @ user3835452 berada di jalur yang benar. Saya menemukan pesan ini ketika mencoba menjalankan
composer
:Setelah mencoba banyak cara berbeda saya hanya berlari
brew install openldap
dan memperbaikinya. Perhatikan bahwa saya sudah menjalankanbrew update
danbrew upgrade
tetapi hanya setelah saya menginstal secara manualopenldap
apakah itu benar-benar berfungsi.sumber
Saya memperbaikinya dengan menginstal ulang Homebrew
Copot pemasangan
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
Install
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
sumber
Saya baru saja digunakan
brew upgrade <the tool>
. Dalam kasus sayabrew upgrade tmux
,.sumber
Saya menghadapi masalah aplikasi yang mengutip kesalahan SIGABRT di thread.Overview dari crash adalah library yang tidak dimuat dan gambar tidak menemukan sesuatu seperti itu.
Ini terlihat di Xcode 9.3. Alasan saya mengetahuinya adalah Xcode tidak mengambil perpustakaan secara dinamis jadi saya harus melakukannya secara manual yang menyelesaikan masalah mogok saya.
Ikuti langkah-langkah di bawah ini:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos
Sekarang Anda akan dapat melihat beberapa dylibs cepat, Pilih semua perpustakaan cepat dengan ekstensi .dylib dan klik terbuka.
Ini akan ditambahkan ke binari tertanam di tab umum aplikasi.
Buat grup baru di folder proyek dan tambahkan semua perpustakaan ini.
Sekarang jalankan aplikasi Anda.
sumber
Jika Anda menggunakan lingkungan Conda di terminal, perbarui samtools untuk menyelesaikannya.
sumber
Jawaban terbaik dijawab di atas, periksa dulu apa hasilnya
otool -L
Dan kemudian lakukan hal berikut jika salah
Dan
sumber
ini harus memperbaiki masalah
sumber
Tidak ada yang di atas bekerja untuk saya, tetapi
brew reinstall icu4c
ternyata berhasil.sumber
Bagi siapa pun yang mungkin masih mengalami masalah ini:
Ini adalah masalah yang sedang berlangsung di pihak Apple, dan yang berhasil bagi saya adalah meningkatkan ke ios 13.4 (beta). Menginstalnya dan bekerja seperti pesona.
sumber