[an error occurred while processing this directive]
Node:djgpp_first_ctor,
Next:Large image,
Previous:Still unresolved,
Up:Compiling
Q: I do everything like your praised FAQ says, but the linker
complains about unresolved symbols with strange names like
djgpp_first_ctor
, djgpp_last_dtor
, etc. I looked in every
library with nm
, and I cannot find these creatures. Where in the
world are they??
A: These symbols are defined by the djgpp.djl
linker script
that should be in your lib/
subdirectory. When you call
gcc
to link a program, it invokes ld.exe
with the option
-T djgpp.djl
. If you invoke ld
directly (this is generally
not recommended), be sure to include that switch. If you did invoke it
through gcc
, maybe your linker is set up incorrectly. Add
-v
to the GCC switches and check that the command line that GCC
gives to LD includes that switch, that your lib/
subdirectory
includes that script file, and that the script file is intact and
includes the definition of the above symbols.
Another reason might be that you have edited your DJGPP.ENV
file
in a way that prevents the linker from finding its djgpp.djl
script.
Mixing an old v1.x installation with a v2.x one can also cause such problems. Be sure to delete the entire v1.x tree, or rename it, before installing the v2.x distribution.