• Welcome to Dark Bit Factory & Gravity.
 

Controlling what the masm's linker include by default

Started by ViL, June 20, 2018

Previous topic - Next topic

0 Members and 0 Guests are viewing this topic.

ViL

 hii! i've looked for a way to manually set the libraries that link.exe includes, by default, when i link using:

C:\masm32\bin\link.exe /verbose /nologo /subsystem:windows /opt:noref main.obj

it says:

Start Pass1

Processed /DEFAULTLIB:C:\masm32\lib\user32.lib
Processed /DEFAULTLIB:C:\masm32\lib\kernel32.lib
Processed /DEFAULTLIB:C:\masm32\lib\gdi32.lib
Processed /DEFAULTLIB:C:\masm32\lib\opengl32.lib
Processed /DEFAULTLIB:C:\masm32\lib\glu32.lib


so i tried setting the /DEFAULTLIB's parameter myself to override them

C:\masm32\bin\link.exe /verbose /nologo /subsystem:windows /defaultlib:C:\masm32\lib\user32.lib /opt:noref main.obj

(i was intending to just link the user32.lib library to intentionally produce an error to see if it worked)

and regardless, it keeps adding the rest of default libraries:

Processed /DEFAULTLIB:C:\masm32\lib\user32.lib

Start Pass1
Processed /DEFAULTLIB:C:\masm32\lib\kernel32.lib
Processed /DEFAULTLIB:C:\masm32\lib\gdi32.lib
Processed /DEFAULTLIB:C:\masm32\lib\opengl32.lib
Processed /DEFAULTLIB:C:\masm32\lib\glu32.lib


is there a way to set them manually?

for example, i recall the same happened linking in mingw's gcc.exe when i coded in c, but using mingw's collect2.exe as a linker enabled me to link them manually, so i though it was possible too in masm

thaanks beforehand! :D

EDIT: turns out they weren't magically added BUT they all were called by using includelib in the asm source!

i'll let this post here if it ever helps someone lol

Siekmanski

    .686p
    .model  flat,stdcall
    .xmm
    option casemap:none

    include       \masm32\include\windows.inc
    include       \masm32\include\kernel32.inc
    includelib    \masm32\lib\kernel32.lib
    include       \masm32\include\user32.inc
    includelib    \masm32\lib\user32.lib


Assemble and link:

Ml.exe /c /coff yourprog.asm
Link.exe /SUBSYSTEM:WINDOWS yourprog.obj


ViL

yea, those includelib; reading further i realized they were stored in the obj file to tell link.exe to link those libraries automatically :D

it's way more practical than putting all the .lib in the linker command as i was used to (aside the command line is supposed to have a limit of 128 characters too)

and thanks too, Siekmanski! :)