ไม่พบไลบรารี boost-thread-mt


8

ฉันกำลังรวบรวมโปรแกรมที่ต้องใช้ไลบรารี Boost-thread-mt ฉันได้ติดตั้ง libboost-all-dev แล้วsudo apt-get install libboost-all-devแต่คอมไพเลอร์บอกว่ามันหาห้องสมุดบูสต์ -tm -mt ห้องสมุดนี้อยู่ในแพ็คเกจอื่นหรือไม่? โปรดแนะนำสิ่งที่ฉันต้องติดตั้งสำหรับสิ่งนี้


คุณlibboost-thread-devติดตั้งแล้วหรือยัง
คอร์นีเลียส

ไม่มี-mtไลบรารีในแพ็คเกจ Boost หลัก ดูคำถามที่ยังไม่ได้แก้ไขนี้ด้วย
saiarcot895

ฉันจะติดตั้งไลบรารี -mt ได้อย่างไร?
มูฮัมหมัดโอเมอร์

คำตอบ:


13

-mtต่อท้ายที่ถูกถอดออก ไลบรารี Boost ที่ติดตั้งไว้นั้นมีความปลอดภัยในการทำเกลียว

libboost-threadคุณสามารถรวบรวมโปรแกรมของคุณเมื่อเทียบกับ ทั้งโดยการเปลี่ยนแหล่งที่มาใช้ไม่ใช่-mtlibs หรือโดยการเชื่อมโยงสัญลักษณ์→libboost_thread.a libboost_thread-mt.aสิ่งเดียวกันถ้าคุณจำเป็นต้องใช้ร่วมกัน .solibs


2
ดังนั้น ... คำแนะนำใด ๆ ในการพัฒนาข้ามแพลตฟอร์มเนื่องจาก Ubuntu มีความคิดที่จะทำสิ่งที่แตกต่างจากคนอื่น ๆ ?
นามแฝง

@ นามแฝงถ้าคุณใช้เครื่องมืออัตโนมัติของ GNU ให้ดูที่Autotconf:AC_CHECK_LIB
user.dz

1
Autoconf overkill สำหรับหลายโครงการโดยเฉพาะถ้าคุณใช้ Boost.Build
นามแฝง

@ นามแฝงฉันไม่คุ้นเคยกับการเพิ่ม แต่check-target-builds ดูเหมือนว่าจะมีฟังก์ชั่นเดียวกันของ autoconf สำหรับ boost.build
user.dz

0

หากโครงการของคุณใช้CMakeสวิตช์ต่อไปนี้ที่มีให้ในโมดูลFindBoostจะต้องปิดตัวลง:-DBoost_USE_MULTITHREADED=OFF


0

นี้การเชื่อมโยงที่เกี่ยวข้องกับคำถามนี้

คุณอาจลองรวบรวมบูสต์จากแหล่งข้อมูลแทนการใช้เวอร์ชัน apt-get

ข้อโต้แย้ง--layout, threadingและbuild-typeจะช่วยให้

--layout=<layout>     Determines whether to choose library names
                      and header locations such that multiple
                      versions of Boost or multiple compilers can
                      be used on the same system.

                      versioned - Names of boost binaries
                      include the Boost version number, name and
                      version of the compiler and encoded build
                      properties.  Boost headers are installed in a
                      subdirectory of <HDRDIR> whose name contains
                      the Boost version number.

                      tagged -- Names of boost binaries include the
                      encoded build properties such as variant and
                      threading, but do not including compiler name
                      and version, or Boost version. This option is
                      useful if you build several variants of Boost,
                      using the same compiler.

                      system - Binaries names do not include the
                      Boost version number or the name and version
                      number of the compiler.  Boost headers are
                      installed directly into <HDRDIR>.  This option
                      is intended for system integrators who are
                      building distribution packages.

                  The default value is 'versioned' on Windows, and
                  'system' on Unix.

ดังนั้นลองใช้คำสั่งนี้เพื่อติดตั้งบูสต์หลังจากbootstrap.sh --prefix=/path/of/yours:

./b2 install -j16 threading=multi --layout=tagged --build-type=complete

จากนั้นคุณจะได้รับ-mtห้องสมุดทั้งหมด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.