I'm trying to compile an open-source project.
One of the steps involves running a .mak
file which has the following line:
kbddvp32.dll: kbddvp32.obj kbddvp.res
$(LINK32) -nologo -dll -base:0x5FFF0000 -subsystem:native -def:kbddvp.def -noentry \
-merge:.edata=.data -merge:.rdata=.data -merge:.text=.data -merge:.bss=.data \
-ignore:4078,4070 -section:.data,re -opt:nowin98 -stack:0x40000,0x1000 -opt:ref,icf \
-release -out:$@ $**
... that becomes:
link -machine:ix86 -nologo -dll -base:0x5FFF0000 -subsystem:native -def:
kbddvp.def -noentry -merge:.edata=.data -merge:.rdata=.data -merge:.text=.data
-merge:.bss=.data -ignore:4078,4070 -section:.data,re -opt:nowin98 -stack:0x400
00,0x1000 -opt:ref,icf -release -out:kbddvp32.dll kbddvp32.obj kbddvp.res
... and when executes, produces the following warnings:
LINK : warning LNK4224: /OPT:NOWIN98 is no longer supported; ignored
Creating library kbddvp32.lib and object kbddvp32.exp
LINK : warning LNK4254: section '.edata' (40000040) merged into '.data' (C000004
0) with different attributes
LINK : warning LNK4254: section '.rdata' (40000040) merged into '.data' (C000004
0) with different attributes
LINK : warning LNK4254: section '.text' (60000020) merged into '.data' (C0000040
) with different attributes
LINK : warning LNK4254: section '.bss' (C0000080) merged into '.data' (C0000040)
with different attributes
I tried reading the documentation for warning LNK4254, but I don't know enough about link.exe to understand how to fix it.
The file kbddvp.def
contains:
LIBRARY KBDDVP
EXPORTS
KbdLayerDescriptor @1
The .mak
file links to this page which it seems to be based off of, and is the reason the -merge:
parts are used in the first place. I realize that this page says that you can use MSKLC 1.4 instead, however it doesn't support all the features I want to implement.
How can I solve these LNK4254 warnings, or can I safely ignore them?