我运行以下命令来链接项目中的不同文件。
/opt/gcc-4.7-cilkplus/bin/gcc -g -Wall -l /opt/gcc-4.7-cilkplus/lib64/ -o exec main.o \
mysql-client.o databaseConnection-common.o murmurhash3.o bloom-filter.o
`mysql_config --cflags --libs\` -lcilkrts
请注意选项 -l /opt/gcc-4.7-cilkplus/lib64 /
当我运行此命令时,我收到此错误:
/ usr / bin / ld:找不到-l / opt / gcc-4.7-cilkplus / lib64 /
但是我的系统中存在此目录。任何人都可以告诉错误。
答案 0 :(得分:3)
-l(el)后面应该是一个库,而不是一个目录。也许你的意思是-L或-I(眼睛)
答案 1 :(得分:0)
您正在使用-l
,您应该使用-L
。选项-l
指定库,而-L
指定查找库的目录。
另请注意,-l
或-L
与其各自的值之间没有空格。
答案 2 :(得分:0)
-Lpath/to/lib -lname
是语法(在-L
和-l
之后没有空格)。例如,如果链接到静态库,则意味着应该使用path/to/lib/libname.a
另外,请注意链接器的参数顺序很重要。也就是说,如果对象A
使用库B
,则应在其后写入B
。如果B
本身使用C
,则应首先提及A
,然后B
,然后C
。
因此,您的命令可能如下所示:
/opt/gcc-4.7-cilkplus/bin/gcc -g -Wall -o exec main.o mysql-client.o \
databaseConnection-common.o murmurhash3.o bloom-filter.o \
`mysql_config --cflags --libs\` -L/opt/gcc-4.7-cilkplus/lib64/ -lcilkrts
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Used -L and moved here