perpustakaan tidak ditemukan untuk -lPods

334

Saya mendapat kesalahan saat mengarsipkan proyek. Ini lingkungan saya.

  • Mac OS Lion
  • Xcode 4.3.1
  • iOS SDK 5.1

Target penyebaran proyek adalah:

IPHONEOS_DEPLOYMENT_TARGET 3.2

Kesalahan menunjukkan:

ld: library not found for -lPods
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Saya kira Pods adalah CocoaPods yang saya gunakan untuk mengelola dependensi proyek XCode. https://github.com/CocoaPods/CocoaPods

Ini adalah Podfile saya

platform :ios  
dependency 'libPusher', '1.1'

Saya tidak yakin apa artinya kesalahan itu?

angelokh
sumber
Penyebab masalah yang tidak ada jawabannya. periksa jawaban ini di sini: stackoverflow.com/questions/24050012/…
hasan

Jawaban:

611

Apakah Anda membuka ruang kerja (yang dihasilkan oleh CocoaPods) alih-alih xcodeproj?

paduan
sumber
26
Aku melakukannya. Masalahnya teratasi setelah mengubah arsitektur rilis proyek Pods ke 'armv6 armv7'.
angelokh
10
Aha, di Anda Podfile, tentukan platform seperti ini:platform :ios, :deployment_target => "3.2" . Itu harus mengkonfigurasinya dengan benar saat berikutnya Anda menjalankan pod install.
paduan
248
Agar jelas bagi pemula di luar sana, Anda harus membuka .xcworkspacefile, bukan .xcodeproj. Dengan cara ini selain proyek Anda, Xcode tahu tentang proyek di Pods/direktori dan cara membuatnya libPods.a.
Jonathan Tran
13
Sebagai lanjutan dari komentar @ JonathanTran ... jika Anda memiliki akun .xcodeprojterbuka, Anda harus menutupnya sebelum membuka .xcworkspacefile.
Ross
4
Perhatikan bahwa proyek yang Anda gunakan pods juga harus memiliki arsitektur itu ditetapkan ke armv6 armv7 (jika itu opsi yang Anda gunakan pada arsitektur proyek pod). Jika Anda tidak melakukannya, Anda akan mendapatkan kesalahan yang sama.
Patrick Bassut
173

Saya memisahkan aplikasi dan target pengujian di Podfile dengan menggunakan

target :App do
    
end

target :AppTests do
    
end

Ini menghasilkan dua produk baru libPods-App.a dan libPods-AppTests.a , masing-masing dan mereka membuat produk libPods.a sebelumnya menjadi usang. Saya harus menghapus produk ini dari bagian Link Binary With Libraries dari konfigurasi Build Phases dari kedua target.

Andras Hatvani
sumber
3
Ya, ini untuk saya, setelah mencoba selusin hal lain sebelumnya di utas ini. Podfile saya memiliki dua target seperti di atas, dan libPods.a tidak sedang dibangun. Menghapus libPods.a dari bagian Link Binary With Libraries "memperbaikinya" (meskipun tentu saja saya sekarang memiliki 32 "simbol yang tidak terdefinisi" pesan untuk disortir, karena lib SQLite yang hilang, dll.
Hot Licks
Ini adalah perbaikan yang sama dengan stackoverflow.com/a/21694261/581994 dan beberapa lainnya.
Hot Licks
Saat ini masih merupakan masalah yang terjadi
nsantorello
"Mereka membuat produk sebelumnya libPods.a usang. Saya harus menghapus ..."
Vassily
Ini sebagian besar masalah bagi saya. Untuk beberapa alasan, saya juga memiliki biner dari target tes yang lebih tua di sana.
LJ Wilson
119

Saya mengalami masalah yang sama hari ini.

  1. Saya menyiapkan proyek baru
  2. Saya memasang pod kakao
  3. Saya membuat konfigurasi baru Previewbersama dengan yang ada DebugdanRelease
  4. Sekarang ketika mengkompilasi Previewkonfigurasi baru ini , kompiler tidak akan dapat terhubung dengan Pods dan memberi saya pesan ini:

    ld: library not found for -lPods

Solusinya:

Yang harus saya lakukan adalah lari

 pod install

lagi dan dengan demikian mengkonfigurasi cocoapod untuk Previewkonfigurasi baru . Itu memperbarui proyek saya, ruang kerja dan file proyek Pod dan masalahnya hilang

Besi
sumber
1
Ini menangkap saya juga. Terutama karena terus bekerja lama setelah saya membuat konfigurasi dan itu hanya ketika saya membersihkan data turunan saya bahwa masalah terjadi.
Daniel Wood
Dan perhatikan peringatan yang ditampilkan di bagian "Statistik pengiriman" dari output "pod install --verbose" atau "pembaruan pod --verbose", seperti target "the` yourApp [Debug] `yang menimpa target` HEADER_SEARCH_PATHS pengaturan `build yang didefinisikan dalam ..." atau "... target menimpa` OTHER_LDFLAGS` pengaturan build ... ".
jk7
ubah pratinjau konfigurasi di Per-konfigurasi Bangun Jalur Produk , lalu lakukan instal pod, pod tidak menyimpan nilai saya di proyek pod, ada bantuan?
liu pluto
Ah! Masalahnya terjadi hanya setelah membuat konfigurasi baru untuk Ekstensi. 3 langkah pertama membantu saya untuk memahami masalah ini. Terima kasih!
iHarshil
70

Pastikan Anda membuka .xcworkspace, bukan.xcodeproj

Michal Gumny
sumber
Ini masalah saya. Saya membuka proyek dari file proyek Xcode biasa. Setelah Anda mulai menggunakan cocoa pod, Anda harus mulai membuka proyek Anda dari file .xcworkspace, bukan .xcodeproj.
HotFudgeSunday
hehe aku selalu melakukan ini :)
yeahdix
INI INI INI
bryan
Ya Tuhan, aku ingin memelukmu. Mengubah banyak hal yang tidak pernah menjadi masalah sejak awal!
kjonsson
53

Bukan solusi yang bekerja untuk saya, ini benar-benar tak tertahankan, ada file libpods.a(yang berwarna merah) saya menghapusnya dan semuanya bekerja dengan baik! Ceria padaku;)

Hemang
sumber
6
Terjadi pada saya juga. Saya telah mengganti nama target saya dan itu menciptakan file .a artefak bermasalah ini.
seenickcode
Jika saya melakukan ini, maka lib yang saya tambahkan menggunakan Cocoapods tidak ditambahkan ke proyek.
Francisco Corrales Morales
1
u membuat hari saya: D, ada 2 target dan saya menghapus satu tetapi podnya masih dan gagal membangun, diselesaikan dengan hanya menghapus referensi pod target itu
mohammad alabid
Hal yang sama terjadi pada saya. Itu adalah proyek lama yang tidak saya sentuh selama bertahun-tahun, masih memiliki format lama Podfile dan sebagainya.
Departamento B
46

Saya telah membagi daftar pod saya di Podfileuntuk target yang berbeda seperti:

target :ABC do
  pod 'KissXML', '~> 5.0'
  pod 'libPhoneNumber-iOS', '~> 0.7.2'
end

target :ABCTests do
  pod 'OCMock', '~> 2.2.1', :inhibit_warnings => true
end

Dan berlari a pod install

Ini menciptakan perpustakaan baru libPods-ABC.ayang harus ditautkan oleh biner saya. Tapi bug itu tidak menghapus pustaka sebelumnya yaitu libPods.a.

Solusi: Keluarkan perpustakaan libPods.adari Build Phasesdari Link Binary With Libraries.

Ayush Goel
sumber
Ini adalah perbaikan yang sama dengan stackoverflow.com/a/23085107/581994 dan stackoverflow.com/a/21694261/581994
Hot Licks
2
Solusinya berbeda. Ini memperbaikinya bagi saya menggunakan solusi tepat ini.
cynistersix
Hapus libPods.a perpustakaan dan kemudian, instal instal memperbaiki masalah untuk saya.
bisma
1
itu diselesaikan ketika kesalahan mengekspor IPHONEOS_DEPLOYMENT_TARGET = 9.0 dengan "ld: library tidak ditemukan untuk -lPods"
jacksonfdam
Bekerja untuk saya, setelah saya mengganti nama target.
alsantos123
46

Saya memiliki file libPod.a lama yang ditentukan (mungkin disebabkan oleh saya mengubah target).

Pengaturan Proyek -> Bangun Fase -> Tautan Biner dengan Perpustakaan

Biasanya, cocoapod hanya akan menyertakan satu perpustakaan, seperti libPods-target.aatau libPods.a. Saya memecahkannya dengan menghapus duplikat.

Sebastian Hojas
sumber
5
Ini berhasil untuk saya. Saya menambahkan dukungan pod untuk target pengujian (* Tes dan * UITests) dan konfigurasi basis berubah dari Pods.debugmenjadi Pods-MyApp.debug, jadi sekarang saya hanya perlu libPods-MyApp.a(ada ikon "pudar" untuk yang lama libPods.a),
Nicolas Miari
Tidak ada ikon pudar untuk saya tetapi ini adalah satu-satunya solusi yang berhasil.
Yogesh Maheshwari
Sama disini. Terima kasih
rmvz3
Saya mengubah nama proyek, dan kesalahan terjadi. Solusi di atas berhasil untuk saya.
guness
44

jika Anda mengalami masalah dengan ini pada cocoapods v25 / Xcode 5

Proyek Pods Xcode sekarang menetapkan pengaturan pembangunan ONLY_ACTIVE_ARCH ke YA dalam konfigurasi Debug. Anda harus menetapkan hal yang sama pada proyek / target Anda, jika tidak build akan gagal.

https://github.com/CocoaPods/CocoaPods/wiki/FAQ#running-into-build-failures-after-migrating-to-xcode-5-and-cocoapods-0250

UPDATE Pastikan Anda memiliki permata / cocoapod terbaru

  • sistem pembaruan gem
  • pembaruan cocoapods

Anda akan ingin membangun kembali proyek menggunakan Pod Install untuk membangun kembali proyek.

johndpope
sumber
Ini untuk saya, setelah menambahkan CP ke proyek yang sangat lama.
Josh Hudnall
Sama untuk saya - menambahkan CP ke proyek yang sangat lama, dapat membangun di atas simulator, tetapi begitu saya beralih untuk membangun untuk perangkat, pembangunan gagal. Jawaban itu sangat membantu!
Florian
40

Jika Xcode mengeluh ketika menautkan, misalnya Library tidak ditemukan untuk -lPods, itu tidak mendeteksi dependensi implisit.

Pergi ke Produk> Edit Skema Klik Build Tambah perpustakaan statis Pods, dan pastikan itu di bagian atas daftar Bersihkan dan bangun lagi Jika itu tidak berhasil, verifikasi bahwa sumber untuk spesifikasi yang Anda coba sertakan telah ditarik dari github. Lakukan ini dengan melihat / Pods /. Jika kosong (tidak seharusnya), verifikasi bahwa ~ / .cocoapods / master //. Podspec memiliki url hub git yang benar di dalamnya. Jika masih tidak berfungsi, periksa pengaturan lokasi pembuatan XCode Anda. Pergi ke Preferensi -> Lokasi -> Data Turunan -> Tingkat lanjut dan atur lokasi bangunan ke "Relatif ke Workspace".

http://docs.cocoapods.org/guides/getting_started.html

Kain Horatio
sumber
3
Bagian pertama memperbaiki masalah saya (Produk> Edit Skema, tambahkan Pods ke Build sebagai item pertama). Terima kasih
William Power
Saya memiliki masalah ini di xCode 6.3 dengan cocoapods 0.36.0, dan inilah yang memperbaikinya. Terima kasih!
ProgrammierTier
sama seperti xcode 6.3 cocoapods 0,37 -> Terima kasih !! semakin gila dengan pengaturan target, sementara masalahnya adalah skema. cukup tambahkan Pods.
altagir
36

Saya memiliki masalah yang sama ketika saya mengedit Podfile menambahkan target yang saya gunakan tanpa target sebelumnya.

Podfile

target 'xxxx' do

pod 'xyz'
pod 'abc'    

end

Setelah bertanya-tanya di sekitar saya menemukan bahwa di bawah properti target >> tab Umum >> bagian Framework dan Perpustakaan Tertaut, Ada libPods-xxxx.a dan libPods.a yang lama

Saya baru saja menghapus libPods.a dan semuanya bekerja dengan baik.

Khaled Annajar
sumber
Itu juga masalah bagi saya. Saya pikir sumber masalahnya adalah saya telah memutakhirkan CocoaPods dan format Podfile selama pengembangan.
gklka
2
Saya memiliki skenario yang persis sama setelah menambahkan target di pod. +1 untuk akurasi
Adriano Spadoni
27

Wiki CocoaPods di GitHub memiliki jawaban yang tepat di FAQ mereka :

  • Pergi ke Product > Edit Scheme
  • Klik Build
  • Tambahkan pustaka statis Pods, dan pastikan itu ada di bagian atas daftar
  • Bersihkan dan bangun kembali
  • Jika itu tidak berhasil, verifikasi bahwa sumber untuk spesifikasi yang Anda coba sertakan telah ditarik dari github. Lakukan ini dengan melihat <Project Dir>/Pods/<Name of spec you are trying to include>. Jika kosong (tidak seharusnya), verifikasi bahwa~/.cocoapods/master/<spec>/<spec>.podspec url github yang benar di dalamnya.
  • Jika masih tidak berfungsi, periksa pengaturan lokasi pembuatan XCode Anda. Pergi ke Preferences -> Locations -> Derived Data -> Advanceddan atur lokasi pembangunan ke "Relatif ke Workspace".

Tangkapan layar

Chris Schiffhauer
sumber
6
Saya juga mengalami masalah ini, tetapi sepertinya saya tidak bisa melakukan langkah-langkah ini. Saya terjebak di "Tambahkan pustaka statis pod dan pastikan itu ada di bagian atas daftar". Pustaka statis tidak muncul dengan saya klik untuk menambahkannya ke skema Bangun. Ada ide?
Bay Phillips
@BayPhillips Tutup proyek Anda saat ini dan buka .xcworkspace yang dibuat di folder proyek Anda. kemudian perpustakaan statis muncul
Juneho Nam
12

Saya mengganti nama proyek menjadi "NBSelector" dari "Partners".

Saya memiliki kesalahan "Library not found for libPods-Partners" setelah mengganti nama proyek. Xcode mencoba menautkan ke file Partners.a yang lama. Hapus saja jika Anda telah menginstal podIn setelah mengganti nama.

masukkan deskripsi gambar di sini

Naloiko Eugene
sumber
solusi sempurna untuk masalah saya :) tetapi setelah menghapus polong perlu menambahkannya lagi jika Anda ingin menggunakannya
satheesh
11

Menggunakan ONLY_ACTIVE_ARCH = TIDAK di semua pod memecahkan masalah untuk saya. Untuk membuat ini terus-menerus, saya menambahkan kait post_install ke Podfile saya:

post_install do |installer_representation|
  installer_representation.project.targets.each do |target|
      target.build_configurations.each do |config|
            config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO'
      end
  end
end

pod install dan kamu sudah selesai.

melle
sumber
8

Apakah Anda membuat 'Distribusi' atau konfigurasi serupa untuk membuat arsip Ad-Hoc dan App Store? Seperti banyak yang lain saya mengikuti rekomendasi Apple dan menjuluki konfigurasi 'Rilis', menyebutnya 'Distribusi' dan menetapkan aturan penandatanganan yang berbeda. Yah, mungkin itu adalah rekomendasi sebelum mereka memperkenalkan skema dan opsi "Distribute" di Organizer, bagaimanapun, saya baru saja mendapatkannya dari sebelumnya.

Lalu saya punya masalah yang sama dengan Pods. Semuanya bekerja dengan baik ketika debugging, tetapi pengarsipan gagal dengan kesalahan tautan. Setelah mencoba ini dan itu saya mengubah konfigurasi Arsip proyek asli saya dari 'Distribusi' menjadi 'Rilis' dan kesalahan tautan hilang.

Namun arsip tidak muncul di Organizer, meskipun saya dapat menemukannya di sistem file, tetapi memiliki ukuran 0.

Langkah terakhir untuk memperbaiki semua ini adalah mengubah pengaturan "Lewati Instalasi" untuk konfigurasi 'Lepaskan' menjadi "TIDAK". Perhatikan, Anda harus melakukan ini hanya untuk proyek utama Anda, tetapi tidak untuk proyek Pods. Lebih baik tinggalkan proyek Pods, karena itu dihasilkan setiap kali Anda menjalankan 'pod install'.

Pembaruan Baru saja mendapat jawaban dari CocoaPods devs. Sepertinya itu tidak berfungsi untuk saya, karena saya sudah mengatur konfigurasi Pods dengan benar. Tapi itu bisa membantu orang lain.

i4niac
sumber
8

Dalam kasus saya masalahnya adalah lokasi Data yang Diperoleh Xcode disetel ke opsi "Legacy". Target CocoaPods (libPods.a) sedang dibangun dengan benar, tetapi Xcode mencari di tempat yang salah untuk itu.

Beralih ke "Unik" (default) menyelesaikan masalah. Anda dapat melakukan ini dengan masuk ke Preferensi> Lokasi dan mengklik tombol Lanjut ...

Adam Sharp
sumber
Tapi saya dalam situasi yang harus saya gunakan "Legacy", terus mencari solusi lain ...
CocoaBob
4

Saya menemukan bahwa memilih "Temukan Ketergantungan implisit" (di bawah skema produk / edit) akan menyelesaikan masalah ini alih-alih harus menambahkan pod sebagai target.

StackRunner
sumber
Menjalankan lagi pemasangan pod dapat membantu setelah mengikuti langkah-langkah ini.
StackRunner
3

Saya memeriksa setiap jawaban di sini, tetapi bagi saya itu sangat sederhana ... Pergi ke Target -> Bangun Fase, lalu hapus libPods-YourProject.a, lalu tambahkan lagi menggunakan "+". Jangan khawatir perpustakaannya merah, tidak apa-apa.

cph2117
sumber
3

Saya menggunakan versi cocoapod lama setelah memperbarui cocoapods itu menyarankan saya untuk memperbarui pod diinstal saya karena pembaruan utama karena saya memperbarui setelah lama. Saya memperbaruinya dan pod versi baru diperbarui dengan baik. Tetapi setelah itu saya mendapat error sepertilibrary not found for -lPods-xxxprojectName-xxxxxpodName

Setelah mencoba begitu banyak solusi yang diberikan sebagai jawaban di thred ini, tidak ada yang berhasil untuk saya. Kemudian saya pergi ke pengaturan proyek saya dan menemukan bahwa jalur pods berubah yang sedang aktifOther Linker Flag

Periksa Manage Schemesnama pod Anda yang benar dan bandingkan Other Linker Flag, Ubah jika tidak sama

Jalur pod lama tadinya -l"lPods-xxxprojectName-xxxxxpodName"

Tapi pod baru hanya xxxxxpodNamejadi saya diganti Other Linker Flagdengan yang baru seperti di bawah ini

Diubah ke jalur pod -l"xxxxxpodName"dan berhasil.

Saya tidak tahu alasan sempurna di balik ini tetapi mungkin ini bisa membantu seseorang.

Bhavin_m
sumber
3

Saya memang membuka ruang kerja, tetapi mendapat kesalahan yang sama.

Bangun Arsitektur Aktif Hanya diatur ke YA

pecahkan masalah saya.

Joeful6
sumber
Itu membantu. Terima kasih. Entah bagaimana itu ditetapkan "YA" untuk Debug hanya sementara sisanya mengkonfigurasi "TIDAK" dan saya telah melihat kesalahan itu untuk semua build kecuali Debug.
Pavel Yakimenko
Ini hanya membantu saya. Jawaban seperti 'Buka sebagai .workspace' terlalu membosankan. Saya pikir pengembang pertama-tama harus memeriksa menginstal dokumen panduan dengan cukup menyeluruh ..
KoreanXcodeWorker
2

Selesaikan dengan mengambil langkah-langkah di bawah ini:

  • Perbarui instalasi cocoapod Anda. ($ [sudo] permata pasang cocoapods)
  • Instal ulang dependensi Anda di bawah proyek Anda. (instal pod)
  • Bersihkan dan bangun kembali / arsip.
SarpErdag
sumber
Ini sebenarnya bekerja dengan sangat baik. Saya telah memperbarui salah satu pod di proyek saya dan itu merusaknya. Saya mengikuti langkah-langkah ini dan berhasil. Itu adalah perbaikan cepat. Terima kasih
agarcian
2

Dalam kasus saya pod installmemperbaiki masalah, setelah membuat skema distribusi dan rilis.

kernel
sumber
1

Saya mendapat masalah yang sama saat pengarsipan untuk pengiriman. Diskusi tentang masalah ini dapat ditemukan di sini: https://github.com/CocoaPods/CocoaPods/issues/155

Singkatnya, dua metode bekerja untuk saya:

  1. Pengaturan "Preferences -> Locations -> Advanced" ke "Custom (Relative to Workspace)" ATAU
  2. Setel Podfile ke - platform :ios, :deployment_target => "5.0"
BabyPanda
sumber
1

Menggunakan Xcode 5 dengan iOS 7

Inilah yang saya lakukan setelah terjebak selama satu jam. Hapus ARM64 dari Bangun Pengaturan> Arsitektur Valid.

TAMBAH: Juga, untuk kasus saya, itu bukan lokasi data turunan. Saya memilih unik untuk membangun lokasi.

ytbryan
sumber
1

jika Anda menggunakan iOS7 dan Xcode 5, lakukan:

  • Pilih Proyek Pods Anda.
  • Pergi ke Pod Target dan di Bangun Pengaturan, pilih Arsitektur-> Arsitektur standar (armv7, armv7s).
  • Lakukan hal yang sama untuk setiap Target Proyek Pods Anda.
rabenson
sumber
1

Saya mencoba SETIAP jawaban di utas ini tidak berhasil. Akhirnya menyelesaikan masalah saya dengan mencocokkan "Jalur Pra-Konfigurasi Pembuatan Produk" di proyek target saya dengan nilai di proyek Pods. Ternyata mereka membangun ke dua lokasi output yang berbeda. Tidak ada saran lain di utas ini yang relevan bagi saya. Akan lebih bagus jika XCode memberikan deskripsi kesalahan yang berguna (seperti MENGAPA tidak dapat menggunakan lib - File Not Found, Tidak ada arsitektur yang cocok ditemukan, dll.).

pengguna3588900
sumber
1

Dalam masalah ini, Jika Anda telah menginstal & memperbarui pod di sistem Anda maka Xcode Anda tidak dapat menemukan perpustakaan Pods. Untuk mengatasi masalah ini, silakan periksa penyebab berikut yang mungkin terjadi:

  1. Anda menggunakan ruang kerja.
  2. Pustaka Pods dibuat.
  3. Pustaka Pods dirujuk dalam grup produk proyek Anda.
  4. Target Anda termasuk pustaka Pods di tautan dengan fase pembuatan kerangka kerja.
Gagan_iOS
sumber
1

mencoba

link_with 'YouTarget1', 'YouTarget2' ...

Proyek saya berhasil, target tiba-tiba berhenti dikompilasi. Kemudian ditambahkan "link_with" dan kembali normal.

Rupanya, sekarang hanya terhubung ke target pertama, adalah apa yang dikatakan tautan:

http://guides.cocoapods.org/syntax/podfile.html#link_with

Wagner Sales
sumber
yang satu ini memperbaikinya untuk saya ... mempunyai masalah, bahwa target pertama sedang dibangun dan target kedua gagal dengan "ld: perpustakaan tidak ditemukan untuk -lPods ..."
Muxor
1

Jika Anda masih mendapatkan masalah ini, cobalah:

pod update

Apakah berhasil bagi saya, semoga ini membantu Anda.

Shobhit C
sumber