簡體   English   中英

g++ 找不到庫,雖然它在那里

[英]g++ cannot find library although it's there

我正在編譯一些 cpp 文件:

$ ​g++ -c --std=c++17 -I/antlr4/runtime/Cpp/runtime/src/ *.cpp

一切順利:

$ ls -l *.cpp *.o
-rw-r--r-- 1 root root   76637 Dec  1 14:33 Java8Lexer.cpp
-rw-r--r-- 1 root root  370768 Dec  1 15:13 Java8Lexer.o
-rw-r--r-- 1 root root  925012 Dec  1 14:33 Java8Parser.cpp
-rw-r--r-- 1 root root 5037896 Dec  1 15:13 Java8Parser.o
-rw-r--r-- 1 root root     113 Dec  1 14:33 Java8ParserBaseListener.cpp
-rw-r--r-- 1 root root    2312 Dec  1 15:13 Java8ParserBaseListener.o
-rw-r--r-- 1 root root     109 Dec  1 14:33 Java8ParserListener.cpp
-rw-r--r-- 1 root root    2304 Dec  1 15:13 Java8ParserListener.o
-rw-r--r-- 1 root root     724 Dec  1 14:36 main.cpp
-rw-r--r-- 1 root root  324360 Dec  1 15:13 main.o

當我嘗試與庫鏈接時,它失敗了:

$ g++ *.o -l/antlr4/runtime/Cpp/dist/libantlr4-runtime.so.4.9.3
/usr/bin/ld: cannot find -l/antlr4/runtime/Cpp/dist/libantlr4-runtime.so.4.9.3
collect2: error: ld returned 1 exit status

這很奇怪,因為共享庫確實存在:

$ ls -l /antlr4/runtime/Cpp/dist/libantlr4-runtime.so.4.9.3
-rwxr-xr-x 1 root root 1599624 Dec  1 14:28 /antlr4/runtime/Cpp/dist/libantlr4-runtime.so.4.9.3

您可以使用選項 -L 指定目錄,並使用其縮寫形式(無 lib 前綴,no.so.xxx 后綴)指定庫文件:

 g++ *.o -L /antlr4/runtime/Cpp/dist -lantlr4-runtime

暫無
暫無

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

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