File: COMPILE-GUIDE

package info (click to toggle)
eggdrop 1.10.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 9,596 kB
  • sloc: ansic: 65,863; javascript: 8,908; sh: 5,337; tcl: 3,801; makefile: 1,771; python: 121
file content (586 lines) | stat: -rw-r--r-- 24,612 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
Eggdrop Compile Guide and FAQ
Last revised: May 14, 2023
    _____________________________________________________________________

                        Eggdrop Compile Guide and FAQ


  This guide may help you successfully compile Eggdrop. Suggestions are by
  various contributors. If you think something should be added, please send
  an e-mail to bugs@eggheads.org. Note that in this document, text between
  a '<' and a '>' should be replaced (without the '<' and '>').

  NOTE: This is not a 'quick install' guide. See the INSTALL file for basic
  setup information. This is intended to help you compile the bot on uncommon
  operating systems, or work past problems encountered during compile.


  Contents:
    Compile Guide:
      A. Standard compile process (Linux, FreeBSD, NetBSD, OpenBSD, etc)
      B. HP-UX B.11.*
      C. Ultrix
      D. macOS (previously OS X and originally Mac OS X)
      E. AIX
      F. IRIX
      G. Solaris / SunOS
      H. Cygwin / Windows
      I. Haiku
      J. Tcl Detection and Installation

    Frequently Asked Questions:
      1. I get a lot of warnings.
      2. I get a 'strip terminated with signal 6' error during compile/install,
         or another error related to 'strip'.
      3. 'DIR' undeclared (and a whole bunch of others) (AIX 4)
      4. 'fd_set' undeclared (and a whole bunch of others) (AIX 4)
      5. Unresolved or undefined symbols: ldclose, ldopen, ldnshread (AIX 3)
      6. Unsatisfied symbols 'shl_findsym' and 'shl_load' (HP-UX 9)
      7. Compile stops at the last minute with "ld fatal signal 11"! (Linux)
      8. Undefined references in net.o (SunOS)
      9. I experience problems starting the configure script (AIX/various)
     10. I get a 'make: Permission denied' error when I type 'make config'
         or 'make' (FreeBSD / *BSD)
     11. I get a 'make: Fatal error in reader: Makefile, line 21: Badly formed
         macro assignment' error when I type 'make config' (OpenIndiana)
     12. I get a 'gmake: readlink: Command not found' error when I type 'gmake
         install' (OpenIndiana)
     13. I get '/usr/bin/ld: cannot find -lpthread' (OpenWrt)
     14. I get 'configure: error: C compiler cannot create executables
         (Alpine Linux)


  Compile Guide
    This will tell you how to compile Eggdrop on various operating systems.
    If you have gotten Eggdrop to compile on an operating system not listed
    here, please let the development team know how, at eggdev@eggheads.org.
    Please tell us what, if any, special steps were required to compile the
    bot. Also, any compiler warnings/etc, and the 'config.log' and 'config.h'
    files would be helpful. The development team does not have access to the
    resources needed to test portability on uncommon operating systems, so
    your help is greatly appreciated.

    A. Standard compile process (Linux, FreeBSD, NetBSD, OpenBSD, etc)
      1. Type './configure' from the Eggdrop directory. Some of the options
         that can be given to ./configure are explained below.

           --enable-strip
             If you want to create a smaller binary, you can use this option.
             HOWEVER, this will remove debugging symbols and make bug reports
             almost completely useless, and is not recommended. If disk space
             is very limited, however, it might help to enable this.

           --with-tcllib
           --with-tclinc
             See 'I. Tcl Detection and Installation' below (at the end of this
             compile guide).

           --with-handlen=
             Configure the handle length of the bot. Allowed values are
             numbers from 9 to 32 inclusive.

           --disable-tls
           --with-sslinc=
           --with-ssllib=
             You can disable TLS or specify the paths to the header and
             library files. Look at doc/TLS for more information.

      2. Type either 'make config', or 'make iconfig' to determine which
         modules will be compiled.

      3. Type 'make' from the Eggdrop directory, or to force a statically
         linked module bot, type 'make static'. Otherwise, the Makefile will
         use whatever type of compile the configure script determined your
         system will support. Dynamic is always the better way to go if
         possible. You can force a dynamic build with 'make eggdrop'. There
         are also the 'debug' and 'sdebug' (static-debug) options, which will
         give more detailed output on a crash. This will help the development
         team track down the crash and fix the bug. Debug and sdebug will take
         a little longer to compile and will enlarge the binary a bit, but
         it's worth it if you want to support Eggdrop development.

      4. Eggdrop must be installed in a directory somewhere. This is
         accomplished by typing 'make install'.

         This will install the Eggdrop in your home directory in a directory
         called 'eggdrop' (i.e. /home/user/eggdrop).

         If you want to install to a different directory, use:

           make install DEST=<directory>

         For example:

           make install DEST=/home/user/otherdir


    B. HP-UX B.11.*
      Follow the standard compile process in Section A. To compile dynamically
      (with module support), use 'make eggdrop' instead of 'make'.

      During a linking in a dynamic build, you may experience an error such as:

        gcc -pipe -fPIC -shared -o ../eggdrop bg.o botcmd.o botmsg.o botnet.o
        chanprog.o cmds.o dcc.o dccutil.o dns.o flags.o language.o match.o
        main.o mem.o misc.o misc_file.o modules.o net.o rfc1459.o tcl.o
        tcldcc.o tclhash.o tclmisc.o tcluser.o userent.o userrec.o users.o
        -L/usr/local/lib -ltcl8.4 -lm -ldld -lnsl md5/md5c.o compat/*.o `cat
        mod/mod.xlibs`
        /usr/ccs/bin/ld: DP relative code in file bg.o - shared library must be
        position independent. Use +z or +Z to recompile.
        collect2: ld returned 1 exit status
        *** Error exit code 1

      If you know the cause of this error, please contact the Eggheads
      Development Team at eggdev@eggheads.org.

      Note that on HP-UX, the SHLIB_PATH environment variable should be used
      instead of LD_LIBRARY_PATH.


    C. Ultrix
      There are some known problems with 'make' and Eggdrop on Ultrix systems.
      We recommend using 'gmake' (GNU make) for this reason, as in the steps
      below.

      If your system does not have 'gmake', you can download it from:

        ftp.gnu.org/pub/gnu/make/

      It can be installed in your home directory, as with Tcl, but that is
      beyond the scope of this document. Read the INSTALL file that comes with
      gmake.

      Following these steps should work:

        1. Depending on what shell your using:

            bash/ksh:
              export LD_LIBRARY_PATH=<path to DIRECTORY containing Tcl library>:${LD_LIBRARY_PATH}

            csh/tcsh/tclsh:
              setenv LD_LIBRARY_PATH <path to DIRECTORY containing Tcl library>:${LD_LIBRARY_PATH}

          2. Run the following command from your Eggdrop compilation directory
             (this is all one command):

            sh5 ./configure --with-tclinc='<full path to tcl.h>'
            --with-tcllib='<full path to Tcl library>'

          3. Type 'gmake config' or 'gmake iconfig' to configure modules.

          4. Type 'gmake'. If you experience problems during linking, or while
             building modules, try using 'gmake static', for a static build,
             instead.

          5. To install Eggdrop, type 'gmake install'.

             This will install the Eggdrop in your home directory in a
             directory called 'eggdrop' (i.e. /home/user/eggdrop).

             If you want to install to a different directory, use:

               gmake install DEST=<directory>

             For example:

               gmake install DEST=/home/user/otherdir


    D. macOS
      Follow the standard compile process in Section A. To compile dynamically
      (with module support), use 'make eggdrop' instead of 'make'.

      To get third-party modules to compile, you may need to edit the module's
      Makefile and add "$(XLIBS) $(MODULE_XLIBS)" to the end of the
      ../../../MODULE.$(MOD_EXT) target's $(LD) line.

      For example:

        ../../../mymodule.$(MOD_EXT): ../mymodule.o
        $(LD) -o ../../../mymodule.$(MOD_EXT) ../mymodule.o
        $(STRIP) ../../../mymodule.$(MOD_EXT)

      Would become:

        ../../../mymodule.$(MOD_EXT): ../mymodule.o
        $(LD) -o ../../../mymodule.$(MOD_EXT) ../mymodule.o $(XLIBS) $(MODULE_XLIBS)
        $(STRIP) ../../../mymodule.$(MOD_EXT)

      If you notice a module that requires these changes, it would probably be
      a good idea to let the module's developer know, so it can be fixed.

      Note that on macOS, the DYLD_LIBRARY_PATH environment variable should
      be used instead of LD_LIBRARY_PATH.

      Install OpenSSL using homebrew:

        Install homebrew from https://brew.sh/
        brew update
        brew install openssl

      Tell configure where to find tcl and / or openssl in case it could not
      autodetect:

        ./configure --with-tcl=/System/Volumes/Data/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/System/Library/Frameworks/Tcl.framework/tclConfig.sh -with-sslinc=/usr/local/Cellar/openssl@3/3.0.7/include --with-ssllib=/usr/local/Cellar/openssl@3/3.0.7/lib


    E. AIX
      Follow the standard compile process in Section A. To compile dynamically
      (with module support), use 'make eggdrop' instead of 'make'.

      Note that on AIX, the LIBPATH environment variable should be used instead
      of LD_LIBRARY_PATH.


    F. IRIX
      Follow the standard compile process in Section A. To compile dynamically
      (with module support), use 'make eggdrop' instead of 'make'.

      Note that on IRIX, the LD_LIBRARYN32_PATH and LD_LIBRARY64_PATH environment
      variables should be used instead of LD_LIBRARY_PATH.


    G. Solaris / SunOS
      Follow the standard compile process in Section A. To compile dynamically
      (with module support), use 'make eggdrop' instead of 'make'.

      Note that on Solaris / SunOS, the LD_LIBRARY_PATH_32 and LD_LIBRARY_PATH_64
      environment variables may need to be set instead of (or in addition to, to
      be safe) LD_LIBRARY_PATH.


    H. Cygwin / Windows
      To compile and install Eggdrop on windows, perform the steps listed
      below.

        1. Download and install Cygwin (www.cygwin.com). Make sure to install
           things like GCC, zlib, minires, autoconf, and automake. DO NOT
           install the Tcl provided by Cygwin's installer. After installing,
           open the Cygwin bash prompt.

        2. Download and install TCL 8.5.9. You can get Tcl for Cygwin at
           http://prdownloads.sourceforge.net/windrop/tcl-8.5.9.tar.gz.
           http://prdownloads.sourceforge.net/windrop/tcl-8.4.1.tar.gz.
           Extract this to the Cygwin root directory:

             cd /
             tar -zxf tcl-8.5.9.tar.gz

        3. Download Eggdrop from https://geteggdrop.com/ to your home directory.
           This is usually something like 'C:\cygwin\home\<username>\'. After
           downloading, extract the Eggdrop tarball:

             tar -zxf eggdrop-1.9.2.tar.gz

        4. Run './configure --enable-strip'. Debugging information under
           Windows is basically useless to the development team, and this will
           reduce the size of your Eggdrop binary.

        5. Type either 'make config', or 'make iconfig' to determine which
           modules will be compiled.

        6. Compile the bot using 'make eggdrop'.

        7. Install the bot by typing 'make install DEST=<install path>'.
           For example:

             make install DEST='C:/eggdrop/'

           Make sure to enclose the destination directory/folder in single
           quotes (''), especially if it contains spaces.

        8. Perform the following commands:

             cd 'C:/<install path>/' (example: cd 'C:/eggdrop')
             rm modules
             rm eggdrop.exe
             mv eggdrop.exe-1.9.2 eggdrop.exe
             mv modules-1.9.2 modules

        9. Create a 'lib' directory and copy needed libraries using the
           following commands. This assumes that you installed your Eggdrop in
           'C:\eggdrop'. If you chose a different installation path, replace
           'C:/eggdrop' in the following steps with your installation
           directory, replacing all '\'s with '/'s.

             cp /bin/cygwin1.dll 'C:/eggdrop'
             cp /usr/local/bin/libtcl8.5.dll 'C:/eggdrop'
             cp /usr/local/bin/tclpip84.dll 'C:/eggdrop'
             cp /bin/cyggcc_s-1.dll 'C:/eggdrop'

             cp /bin/cygcrypto-0.9.8.dll 'C:/eggdrop' (if compiled with ssl)
             cp /bin/cygssl-0.9.8.dll 'C:/eggdrop' (if compiled with ssl)

             mkdir C:/eggdrop/lib
             cp -r /usr/local/lib/tcl 'C:/eggdrop/lib'
             cp -r /usr/local/lib/tcl8.5 'C:/eggdrop/lib'

             cp /bin/cygz.dll 'C:/eggdrop' (if you selected compress.mod)


    I. Haiku
      If you compile Tcl from source and it breaks with a thread error 
      (and --disable-threads doesn't help), you can workaround this by
      removing the 'pkgs/thread<VERSION>' directory.

      Note that on Haiku, the LIBRARY_PATH environment variable must be used
      instead of LD_LIBRARY_PATH.


    J. Tcl Detection and Installation
      If ./configure does not correctly detect the location of your Tcl
      library and header file, or if you experience errors related to Tcl
      during linking, perform these steps:

        1. Depending on what shell your using:

          bash/ksh:
            export LD_LIBRARY_PATH=<path to DIRECTORY containing Tcl library>:${LD_LIBRARY_PATH}

          csh/tcsh/tclsh:
            setenv LD_LIBRARY_PATH <path to DIRECTORY containing Tcl library>:${LD_LIBRARY_PATH}

          Note that some OS's use a different environment variable to tell
          ld where to look for a library. See the notes for your specific OS
          above (if applicable).

        2. Run the following command from your Eggdrop compilation directory
           (this is all one command):

          ./configure --with-tclinc='<full path to tcl.h>'
          --with-tcllib='<full path to Tcl library>'

        3. Continue compiling the bot as outlined in Section A., starting
           with 'make config'.

        If you do not have Tcl installed on your system, you can compile it in
        your /home directory. Download Tcl from Tcl's SourceForge project page
        at https://sourceforge.net/projects/tcl/, or from ActiveState at
        https://www.activestate.com/products/tcl/. Read Tcl's README file for
        help with compiling and installing it. After you compile Tcl, follow
        the steps above to allow Eggdrop to detect Tcl.


  Frequently Asked Questions
    1. I get a lot of warnings.

      Warnings do not necessarily mean anything bad. As long as the compile
      completes, there is really nothing to worry about. Generally, we try to
      avoid warnings. We try to fix the warnings we are aware of. If you
      experience warnings, you can let us know by e-mailing bugs@eggheads.org.
      If you feel like fixing them yourself, please do so and send us a patch
      (as described in doc/PATCH_HOWTO). Thanks.


    2. I get a 'strip terminated with signal 6' error during compile/install,
       or another error related to 'strip'.

      collect2: strip terminated with signal 6 [IOT/Abort trap]
      *** Exit 1
      Stop.
      *** Exit 1
      Stop.

      Don't use the --enable-strip ./configure option.


    3. 'DIR' undeclared (and a whole bunch of others) (AIX 4)

      gcc -c -O2 -fno-strength-reduce -I.. -DHAVE_CONFIG_H  filedb.c
      filedb.c: In function `filedb_update':
      filedb.c:209: `DIR' undeclared (first use this function)
      filedb.c:209: (Each undeclared identifier is reported only once
      filedb.c:209: for each function it appears in.)
      filedb.c:209: `dir' undeclared (first use this function)
      filedb.c:209: parse error before `*'
      filedb.c:217: warning: assignment makes pointer from integer without a cast
      filedb.c:218: `name' undeclared (first use this function)
      filedb.c:218: dereferencing pointer to incomplete type
      filedb.c:220: dereferencing pointer to incomplete type
      filedb.c:220: dereferencing pointer to incomplete type
      filedb.c:224: dereferencing pointer to incomplete type
      filedb.c:224: dereferencing pointer to incomplete type
      filedb.c:225: dereferencing pointer to incomplete type
      filedb.c:230: `s' undeclared (first use this function)
      filedb.c:231: `st' undeclared (first use this function)
      filedb.c:232: `fdb' undeclared (first use this function)
      filedb.c:232: `where' undeclared (first use this function)
      filedb.c:237: `fdb1' undeclared (first use this function)
      filedb.c:253: warning: assignment makes pointer from integer without a cast
      make: The error code from the last command is 1.

      The configure script didn't detect that this particular system had dirent.h
      and sys/dir.h. The solution is to add -DHAVE_DIRENT_H -DHAVE_SYS_DIR_H to
      the Makefile's CFLGS line:

        CFLGS = -DHAVE_DIRENT_H -DHAVE_SYS_DIR_H


    4. 'fd_set' undeclared (and a whole bunch of others) (AIX 4)

      gcc -c -O2 -fno-strength-reduce -I.. -DHAVE_CONFIG_H -DHAVE_DIRENT_H -DHAVE_SYS_DIR_H net.c
      net.c: In function `sockread':
      net.c:390: `fd_set' undeclared (first use this function)
      net.c:390: (Each undeclared identifier is reported only once
      net.c:390: for each function it appears in.)
      net.c:390: parse error before `fd'
      net.c:396: `fd' undeclared (first use this function)
      make: The error code from the last command is 1.

      Again, this seems that one of configure's components (sed, awk,
      or something along those lines) is broken, and configure failed to
      detect that this system needed sys/select.h. The solution is to add
      -DHAVE_SYS_SELECT_H to the Makefile's CFLGS line:

        CFLGS = -DHAVE_DIRENT_H -DHAVE_SYS_DIR_H -DHAVE_SYS_SELECT_H


    5. Unresolved or undefined symbols: ldclose, ldopen, ldnshread (AIX 3)

      cc -s -o eggdrop chan.o chanprog.o chanset.o cmds.o dcc.o dccutil.o
      filedb.o fileq.o files.o gotdcc.o hash.o main.o match.o mem.o misc.o
      mode.o msgcmds.o msgnotice.o net.o tandcmd.o tandem.o tcl.o tclhash.o
      userrec.o users.o -L/home2/f/foster/lib -ltcl7.5 -lm
         0706-317 ERROR: Unresolved or undefined symbols detected:
                         Symbols in error (followed by references) are dumped to the load map.
                         The -bloadmap:<filename> option will create a load map.
         .ldclose
         .ldopen
         .ldnshread
         make: 1254-004 The error code from the last command is 8.

      Apparently, what is happening is a library called ld is required. Either
      configure doesn't know it is needed, it simply can't find it, or maybe
      this is a unique case. The solution is to have ld linked in with the final
      binary.

      Edit your Makefile and find the line that looks something like this:

        GMAKE = ${MAKE} 'CC=cc' 'AWK=awk' 'OBJS=${OBJS}' 'TCLLIBFN=tcl7.5.a'\
                'CFLAGS=${CFLAGS}' 'XREQ=${XREQ}' 'XLIBS= -L/home2/f/foster/lib -ltcl7.5 -lm'\
                'TCLLIB=${TCLLIB}' 'RANLIB=ranlib' 'STRIP=-s'

      Add in -lld into the XLIBS assignment, like this:

        GMAKE = ${MAKE} 'CC=cc' 'AWK=awk' 'OBJS=${OBJS}' 'TCLLIBFN=tcl7.5.a'\
                'CFLAGS=${CFLAGS}' 'XREQ=${XREQ}' 'XLIBS=-lld -L/home2/f/foster/lib -ltcl7.5 -lm'\
                'TCLLIB=${TCLLIB}' 'RANLIB=ranlib' 'STRIP=-s'


    6. Unsatisfied symbols 'shl_findsym' and 'shl_load' (HP-UX 9)

      gcc -s -o eggdrop chan.o chanprog.o chanset.o cmds.o dcc.o
      dccutil.o filedb.o fileq.o files.o gotdcc.o hash.o main.o match.o
      mem.o misc.o mode.o msgcmds.o msgnotice.o net.o tandcmd.o tandem.o
      tcl.o tclhash.o userrec.o users.o -L/home/hltran/tcl/lib -ltcl7.5 -lm
         /bin/ld: Unsatisfied symbols:
            shl_findsym (code)
            shl_load (code)
         collect2: ld returned 1 exit status
         *** Error code 1
         Stop.

      Upgrade to a later version of Tcl. The following should also work.

      Edit your Makefile and find the line that looks something like this:

        GMAKE = ${MAKE} 'CC=gcc' 'AWK=awk' 'OBJS=${OBJS}' 'TCLLIBFN=tcl7.5.a'\
                'CFLAGS=${CFLAGS}' 'XREQ=${XREQ}' 'XLIBS= -L/usr/local/lib -ltcl7.5 -lm'\
                'TCLLIB=${TCLLIB}' 'RANLIB=:' 'STRIP='

      Add in -ldl into the XLIBS assignment, like this:

        GMAKE = ${MAKE} 'CC=gcc' 'AWK=awk' 'OBJS=${OBJS}' 'TCLLIBFN=tcl7.5.a'\
                'CFLAGS=${CFLAGS}' 'XREQ=${XREQ}' 'XLIBS=-ldl -L/usr/local/lib -ltcl7.5 -lm'\
                'TCLLIB=${TCLLIB}' 'RANLIB=:' 'STRIP='


    7. Compile stops at the last minute with "ld fatal signal 11"! (Linux)

      This seems to be caused by a non-ELF Tcl library binary, and the compiler
      doesn't seem to like it. Download and install Tcl in your home directory
      using the steps in 'E. Tcl Detection and Installation' in the Compile
      Guide above.


    8. Undefined references in net.o (SunOS)

                     First
      Undefined    Referenced
       Symbol       In file

      socket          net.o
      gethostbyname   net.o
      accept          net.o
      bind            net.o
      setsockopt      net.o
      gethostbyaddr   net.o
      getsockname     net.o
      gethostname     net.o
      listen          net.o
      connect         net.o
      ld: fatal: Symbol referencing errors. No output written to eggdrop

      This seems to be caused by a few libraries not being detected by the
      auto-configure script; it is relatively easy to fix. Edit your Makefile.
      Note that yours may be slightly different than this one when it comes to
      the Tcl library, but here is the way it probably is:

        GMAKE = ${MAKE} 'CC=gcc' 'AWK=awk' 'OBJS=${OBJS}' 'TCLLIBFN=tcl.a'\
                'CFLAGS=${CFLAGS}' 'XREQ=${XREQ}' 'XLIBS= -L/usr/local/lib -ltcl -lm'\
                'TCLLIB=${TCLLIB}' 'RANLIB=:' 'STRIP='

      Here is what you need to change it to:

        GMAKE = ${MAKE} 'CC=gcc' 'AWK=awk' 'OBJS=${OBJS}' 'TCLLIBFN=tcl.a'\
                'CFLAGS=${CFLAGS}' 'XREQ=${XREQ}' 'XLIBS=-lsocket -ldl -lnsl -L/usr/local/lib -ltcl -lm'\
                'TCLLIB=${TCLLIB}' 'RANLIB=:' 'STRIP='

      You are adding three libraries to be linked in: socket, dl, and nsl. This
      will resolve the net.o errors.


    9. I experience problems starting the configure script (AIX/various)

      If you receive file descriptor or bad interpreter errors when attempting
      to run the configure script, try running 'sh configure' or 'bash configure'
      instead of './configure'. This problem seems to show up on many AIX
      machines.


    10. I get a 'make: Permission denied' error when I type 'make config' or
        'make' (FreeBSD / *BSD)

      This is caused by a bug in FreeBSD (and possibly other BSDs as well).
      A simple 'cd .', or changing to a different directory and then changing
      back, usually fixes this.

    11. I get a 'make: Fatal error in reader: Makefile, line 21: Badly formed
        macro assignment' error when I type 'make config' (OpenIndiana)

      OpenIndiana does not use GNU make. Eggdrop uses a GNU make extension in
      it's Makefile. Install and use GNU make on OpenIndiana.

    12. I get a 'gmake: readlink: Command not found' error when I type 'gmake
        install' (OpenIndiana)

      Install gnu-coreutils on OpenIndiana.

    13. I get '/usr/bin/ld: cannot find -lpthread' (OpenWrt)

      Pthread primitives are part of the core libc.so library. To satisfy
      -lpthread, create an empty AR archive (a static library) somewhere in the
      library search path. E.g.:

        ar -rc /usr/lib/libpthread.a

    14. I get 'configure: error: C compiler cannot create executables
        (Alpine Linux)

      Install the musl c library implementation used by Alpine:
        apk add musl-dev
    _____________________________________________________________________

   Copyright (C) 1997 Robey Pointer
   Copyright (C) 1999 - 2025 Eggheads Development Team