有两个共享库,它们的名称相同但后缀不同。例如(A.dll和A.lib(。现在,当我使用命令"make"生成C代码时,编译器会选择A.lib作为默认选项。那么我该如何选择我需要的灵活库呢?下面的代码是makefile的代码。
CC = gcc
COSI_LIB = '/C/A'
OBJ_NAME = B.exe
SOURCE = B.c
${OBJ_NAME}: ${SOURCE}
@$(CC) -I${COSI_LIB} -L${COSI_LIB} -lA -o ${OBJ_NAME} ${SOURCE}
clean:
@rm $(OBJ_NAME) -r -f
我需要知道,当有两个相同名称但格式不同的文件(例如,一个名为abc.dll,另一个名为abc.lib(,并且我在term上输入命令"make"时,我希望编译器选择.dll文件而不是.lib文件。
首先,编译器不关心任何.lib
或.dll
文件,只有链接器关心。
其次,在Windows上,链接器从不使用.dll
s。它始终使用.lib
,并且它是包含.o
文件(直接链接到二进制文件中(、或的.lib
文件;dll导入";,其告诉链接器建立";导入表";以便在运行时用于从对应的CCD_ 7导入函数。
也就是说(与UNIX不同(,无法决定是针对.lib
还是针对.dll
进行链接(始终针对.lib
进行链接(。无论是谁构建了.lib
和.dll
,都决定了哪些部件(如果有(要直接链接,哪些部件要从.dll
导入。