簡體   English   中英

創建在Linux中使用opencv的C ++動態庫

[英]creating C++ dynamic library which uses opencv in linux

我正在嘗試通過使用opencv和tesseract與動態鏈接的程序在linux中創建共享庫

點擊了鏈接我的代碼如下

g++ -c Serial_Key.cpp -fPIC -o cdserial `pkg-config --cflags --libs opencv` -llept -ltesseract
g++ -shared -Wl,-soname,libctest.so.1 -o libctest.so.1.0 cdserial
ln -sf libctest.so.1.0 libctest.so
ln -sf libctest.so.1.0 libctest.so.1
g++ -c Test.cpp -fPIC -o cprog -lctest `pkg-config --cflags --libs opencv` -llept -ltesseract

這里的Test.cpp是一個簡單的文件,如下所示

#include <stdio.h>
int Serial_key();
int main(){
int x=Serial_key();
printf("Success");
return 0;}

以某種方式將其作為./cprog的給定錯誤為./cprog:無法執行二進制文件:Exec格式錯誤

我覺得我在第二行(g ++ -shared)犯了一些基本錯誤,請指導

經過更多的頭部仰卧起坐后,我發現上述問題中存在一些愚蠢的錯誤

這是針對可能陷入類似問題的其他人的更正流程

  1. 第一次編譯

    g ++ -c Serial_Key.cpp -fPIC -o cdserial

  2. 通過使用soname提及庫及其路徑來創建共享庫

    g ++ -shared -Wl,-soname,libctest.so.1 -o libctest.so.1.0 cdserial -lopencv_highgui -lopencv_imgproc -lopencv_core -lopencv_imgcodecs -lopencv_videoio -llept -ltesseract -L / usr / local / lib

  3. 將soname與庫鏈接

    ln -sf libctest.so.1.0 libctest.so ln -sf libctest.so.1.0 libctest.so.1

  4. 編譯並創建測試文件的對象

    g ++ Test.cpp -fPIC -o cprog -lctest -lopencv_highgui -lopencv_imgproc -lopencv_core -lopencv_imgcodecs -lopencv_videoio -llept -ltesseract -L / usr / local / lib

  5. 將共享庫文件復制到本地庫

    cp libctest.so / usr / local / lib cp libctest.so.1 / usr / local / lib cp libctest.so.1.0 / usr / local / lib

  6. 確保$ LD_LIBRARY_PATH指向共享庫路徑

    導出LD_LIBRARY_PATH = / usr / local / lib

  7. ./cprog

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM