C ++ சார்புகளை சொடுக்கு செய்யக்கூடியதாகக் கையாளவும்

ஒரு பயன்பாடு உபுண்டு டச்சில் முன்பே நிறுவப்படாத ஒரு நூலகத்தைப் பொறுத்தது என்றால், பயன்பாடு அதை சொடுக்கு தொகுப்புக்குள் அனுப்ப வேண்டும். சொடுக்கு செய்யக்கூடிய மூலம் இதை எவ்வாறு செய்ய முடியும் என்பதை இந்த வழிகாட்டி காட்டுகிறது.

கட்டிடம்

சில நேரங்களில் நூலகங்கள் முன்பே கட்டப்பட்டுள்ளன, இது உருவாக்க படிநிலையைத் தவிர்க்க உங்களை அனுமதிக்கிறது. உங்கள் சார்புநிலையைத் தொகுத்தல் பரிந்துரைக்கப்படுகிறது, ஏனெனில் இது முழு செயல்முறையிலும் உங்களுக்கு கூடுதல் கட்டுப்பாட்டை அளிக்கிறது மற்றும் சிறந்த முடிவுகளுக்கு வழிவகுக்கும் (எ.கா. சிறந்த செயல்திறன் அல்லது சிறிய தொகுப்பு அளவுகள்).

தொகுப்பு

நூலகத்தின் மூலக் குறியீட்டை libs/libname (நூலகத்தின் பெயரால் libname ஐ மாற்றுவது) இல் வைக்கவும், ஏனென்றால் சொடுக்கு செய்யக்கூடியது இயல்பாகவே இதைத் தேடும். சார்பு மூலக் குறியீடு ஒரு அறிவிலி களஞ்சியமாகக் கிடைத்தால், அதை அறிவிலி துணைமோடல். இல்லையெனில் ஆதாரங்களைப் பதிவிறக்க ஒரு ச்கிரிப்டைச் சேர்க்கவும்.

உங்க சொடுக்கக்கூடிய.yaml-க்கு ஒரு நூலகங்கள் பிரிவை சேர், இதுபோல்:

 builder: "cmake"
 libraries:
   LIBNAME:
     builder: "cmake"

நூலகத்தில் CMAKE உள்ளமைவு இல்லை என்றால், அதற்கு பதிலாக QMake அல்லது Custom பில்டரைப் பயன்படுத்த வேண்டும்.

விருப்பமாக, Build_args ஐச் சேர்ப்பதன் மூலம் தொகுப்பை உள்ளமைக்கவும், இது இப்படி தோன்றலாம்:

 builder: "cmake"
 libraries:
   LIBNAME:
     builder: "cmake"
     build_args:
     - "-DBUILD_EXAMPLES=OFF"
     - "-DBUILD_DOCS=OFF"
     - "-DBUILD_TESTS=OFF"
     - "-DBUILD_SHARED_LIBS=OFF"

பெரும்பாலான உருவாக்க வாதங்கள் திட்டமானவை. எனவே, நூலகத்தின் உருவாக்க வழிமுறைகளைப் படித்து, அதன் cmakelists.txt இல் விருப்பம் அமைப்புகளையும் தேடுங்கள்.

அனைத்து கட்டமைப்புகளுக்கும் நூலகத்தை உருவாக்க உண்மையில் சொடுக்கு செய்யக்கூடிய --லிப்ச் --arch armhf, சொடுக்கு செய்யக்கூடிய கட்டமைப்பை --libs --arch ARM64 மற்றும் சொடுக்கு செய்யக்கூடிய உருவாக்கம் --libs --arch amd64 ஆகியவற்றை இயக்கவும். உங்கள் README இல் இந்த படியைக் குறிப்பிட மறக்காதீர்கள், இதன் மூலம் மற்றவர்கள் உருவாக்க செயல்முறையை மீண்டும் உருவாக்க முடியும்.

டெலிபோர்ட்ச் சொடுக்கக்கூடிய.yaml அதன் சார்பு tdlib ஐ உருவாக்க நூலகங்கள் அம்சத்தை எவ்வாறு பயன்படுத்துகிறது என்பதைப் பார்க்கவும்.

முன் கட்டப்பட்ட

மேலே விவரிக்கப்பட்டுள்ளபடி உங்கள் நூலகத்தை தொகுத்தால், இந்த படியைத் தவிர்க்கவும்.

முன்பே கட்டப்பட்ட நூலகம் பொதுவாக பகிரப்பட்ட பொருளாக மட்டுமே கிடைக்கிறது, இது மாறும் வகையில் இணைக்கப்பட வேண்டும். மேலும், இது உங்களுக்குத் தேவையில்லாத கூறுகளைக் கொண்டிருக்கலாம், இதன் விளைவாக வீங்கிய பயன்பாடு ஏற்படுகிறது. அதை நீங்களே தொகுத்து நீங்கள் அடையக்கூடிய ஒன்றை கூட இழக்கக்கூடும். சில நேரங்களில், உபுண்டு களஞ்சியங்களில் ஒரு நூலகம் கிடைக்கிறது, ஆனால் உங்களுக்குத் தேவையான கட்டிடக்கலைக்கு (ARMHF அல்லது ARM64) நிறுவ முடியாதது. இந்த வழக்கில் நீங்கள் மேலே விவரிக்கப்பட்டுள்ளபடி நூலகத்தை தொகுக்க வேண்டும்.

உபுண்டு களஞ்சியங்களில் நூலகம் கிடைத்தால், இது போன்ற சார்பு பட்டியலில் இதைச் சேர்க்கலாம்:

 builder: "cmake"
 dependencies_target:
 - "libsomething-dev"

சொடுக்கு செய்யக்கூடியது உருவாக்கக் கொள்கலனுக்குள் இலக்கு கட்டமைப்பிற்கு குறிப்பிட்ட தொகுப்பைத் தானாக நிறுவும். ஒரு உதாரணத்தை கிதார் கருவிகள்' சொடுக்கக்கூடிய.json.

ஒரு பிபிஏவில் நூலகத்தைக் காண முடிந்தால், நீங்கள் பிபிஏவை சொடுக்கு செய்யக்கூடியது. ஐம்லிலும் சேர்க்கலாம். உதாரணமாக:

 builder: "cmake"
 dependencies_ppa:
 - "ppa:someone/libsomething"
 dependencies_target:
 - "libsomething-dev"

இல்லையெனில் முன்பே கட்டப்பட்ட நூலகத்தைப் பதிவிறக்க ஒரு ச்கிரிப்டைச் சேர்க்கவும்.

பயன்பாடு

முதலில், பயன்பாட்டின் மூலக் குறியீட்டில் நீங்கள் சேர்த்துள்ள தலைப்புகள் காணக்கூடிய கோப்பகத்தை நீங்கள் குறிப்பிட வேண்டும். இரண்டாவதாக, உங்கள் பயன்பாட்டின் பைனரிக்கு எதிராக நூலகத்தின் பைனரியை இணைக்க வேண்டும்.

நூலகத்தில் ஒரு CMAKE உள்ளமைவு கோப்பு இருந்தால், நீங்கள் find_package கட்டளை, இது இயக்குநர்கள் மற்றும் மாறுபாடுகளைச் சேர்ப்பதற்கான இலக்கை உங்களுக்கு வழங்குகிறது. உங்கள் cmakelists.txt இல் கூடுதல் வரிகள் அப்படி இருக்கலாம்:

find_package(SOMELIBRARY REQUIRED)

include_directories(${SOMELIBRARY_INCLUDE_DIRS})
target_link_libraries(mytarget ${SOMELIBRARY_LIBS})

find_package கட்டளை பொதுவாக உள்ளடக்கிய கோப்பகத்திற்கான பாதையை SOMELIBRARY_INCLUDE_DIRS என்றும் நூலகத்தின் பைனரிகளை SOMELIBRARY_LIBS என்றும் வரையறுக்கிறது (அவற்றின் CMake உள்ளமைவு சரியாக என்ன வழங்குகிறது என்பதை நூலகத்தின் ஆவணங்களைச் சரிபார்க்கவும்). include_directories மற்றும் target_link_libraries கட்டளைகளுடன் அவற்றைப் பயன்படுத்தவும். நிச உலக உதாரணத்திற்கு கேமரா ச்கேனர் இமேச் பிராசசிங் CMakeLists.txt ஐப் பார்க்கவும்.

இந்த கட்டத்தில் நீங்கள் ஏற்கனவே சொடுக்கு செய்யக்கூடிய டெச்க்டாப் பயன்முறையை சொடுக்கு செய்யக்கூடிய டெச்க்டாப் உடன் சோதிக்க முடியும்.

வரிசைப்படுத்தல்

நீங்கள் நூலகத்தை சட்டப்பூர்வமாக இணைத்திருந்தால், நூலகத்தின் பைனரி ஏற்கனவே உங்கள் பயன்பாட்டின் பைனரிக்குள் இருப்பதால், இந்த படிநிலையைத் தவிர்க்கலாம்.

எந்த பகிரப்பட்ட பொருள் கோப்புகள் (*.SO) நீங்கள் அனுப்ப வேண்டும் என்பதைக் கண்டறியவும். உங்கள் கருவியில் பயன்பாட்டை சொடுக்கு செய்யக்கூடிய && சொடுக்கு செய்யக்கூடிய பதிவுகள் வழியாகத் தொடங்குவதன் மூலம் நீங்கள் அவ்வாறு செய்யலாம். எந்த பகிரப்பட்ட பொருள் கோப்பு இல்லை என்று சொல்லும் பிழை செய்தியை நீங்கள் காண வேண்டும்.

பகிரப்பட்ட பொருள் கோப்புகளுக்கான பாதையைக் கண்டறியவும். க்ளிக் செய்யக்கூடிய வகையில் கட்டப்பட்ட நூலகங்களுக்கு, நூலகத்தின் நிறுவல் இயக்ககத்தில் அவை எங்காவது அமைந்துள்ளன, இது நூலகத்தின் பில்ட் டிரில் இயல்பாகவே அமைந்துள்ளது (எ.கா. build/arm-linux-gnueabihf/opencv/install). முன்பே கட்டமைக்கப்பட்ட நூலகங்களுக்கு, கிளிக் செய்யக்கூடிய ரன் "find / -name 'libSomething.so'" (நீங்கள் தேடும் கோப்பின் மூலம் libSomething.so என்பதற்குப் பதிலாக) இயக்கவும். இது கோப்பிற்கான பாதையை அச்சிட வேண்டும் (சில பிழை செய்திகளுடன் நீங்கள் புறக்கணிக்கலாம்). பொதுவாக, பகிரப்பட்ட பொருள் கோப்புகளைத் தேடும்போது /usr/lib என்பது ஒரு நல்ல பந்தயம்.

சொடுக்கு தொகுப்பில் கோப்புகளைப் பெற, நிறுவு_நூல் விசையை உங்கள் சொடுக்கக்கூடிய.yaml இல் சேர்:

 builder: "cmake"
 libraries:
   LIBNAME:
     builder: "cmake"
     install_lib:
     - "$LIBNAME_LIB_INSTALL_DIR/usr/lib/$ARCH_TRIPLET/libqmapboxgl.so*"
     - "/usr/lib/$ARCH_TRIPLET/libSoundTouch.so.*"

மேலே உள்ள கோடுகளில் இரண்டு எடுத்துக்காட்டுகள் உள்ளன. முதல் ஒன்று சொடுக்கு செய்யக்கூடிய ஒரு நூலகத்தை நிறுவுகிறது. .so* இல் உள்ள விண்மீன் தற்போதைய பதிப்பை சுட்டிக்காட்டப் பயன்படும் உண்மையான நூலகத்துடன் குறியீட்டு இணைப்புகளைப் பிடிக்க உதவுகிறது.

நூலகத்தைப் பொறுத்து, நீங்கள் சில கூடுதல் தரவை அனுப்ப வேண்டியிருக்கும். அவ்வாறான நிலையில் நூலகத்தின் README ஐ அணுகவும் அல்லது வழிமுறைகளை நிறுவவும்.

சொடுக்கு செய்யக்கூடிய இயங்குவதன் மூலம் இப்போது உங்கள் கணினியுடன் இணைக்கப்பட்ட கருவியில் உங்கள் சொடுக்கு தொகுப்பை உருவாக்க மற்றும் நிறுவ நீங்கள் அமைக்கப்பட வேண்டும்.