Menghubungkan dengan perpustakaan yang mendefinisikan simbol yang hilang ( -lboost_system
) adalah solusi yang jelas, tetapi dalam kasus tertentu dari Boost.System, kesalahan dalam desain aslinya membuatnya digunakan boost::system::generic_category()
dan boost::system::system_category()
tidak perlu. Mengompilasi dengan bendera -DBOOST_SYSTEM_NO_DEPRECATED
menonaktifkan kode itu dan memungkinkan sejumlah program dikompilasi tanpa memerlukan -lboost_system
(tautan itu tentu saja masih diperlukan jika Anda secara eksplisit menggunakan beberapa fitur perpustakaan).
Mulai dari Boost 1.66 dan commit ini , perilaku ini sekarang menjadi default, jadi semoga semakin sedikit pengguna yang membutuhkan jawaban ini.
Seperti yang diperhatikan oleh @AndrewMarshall, alternatifnya adalah dengan menentukan BOOST_ERROR_CODE_HEADER_ONLY
mana yang memungkinkan versi kode hanya-header. Ini tidak disarankan oleh Boost karena dapat merusak beberapa fungsionalitas. Namun, sejak 1.69, header-only tampaknya telah menjadi default , yang seharusnya membuat pertanyaan ini menjadi usang.