George Luft - 2010-02-20

Can someone please help me get cdrdao 1.2.3 to compile under cygwin?  I'm not sure why I am getting these errors or what can be done about them. 

There is a(n unanswered) post on the cdrdao-devel mailing list with the same error:
https://sourceforge.net/mailarchive/message.php?msg_name=From_tplank%40gmx.at_Fri_Nov_13_21%3A53%3A38_2009

At first, I had a problem with fexecve…

In file included from scsi-remote.c:69:
../include/schily.h:111: error: conflicting types for 'fexecve'
/usr/include/sys/unistd.h:64: error: previous declaration of 'fexecve' was here

but I found some guidance on Joerg Schilling's site to get around this POSIX compliance issue by using a newer (alpha) version of cdrtools-2.01.01a76.

Now that is resolved, but this is where make goes off the rails:

main.o: In function `_Z11setupDevice10DaoCommandPKcS1_iiiibb':
/tmp/cdrdao-1.2.3/dao/main.cc:1447: undefined reference to `ScsiIf::bus()'
/tmp/cdrdao-1.2.3/dao/main.cc:1448: undefined reference to `ScsiIf::id()'
/tmp/cdrdao-1.2.3/dao/main.cc:1449: undefined reference to `ScsiIf::lun()'
main.o: In function `_Z7scanBusv':
/tmp/cdrdao-1.2.3/dao/main.cc:1920: undefined reference to `ScsiIf::scan(int*, c
har*)'
main.o: In function `_Z16getDefaultDevice13DaoDeviceType':
/tmp/cdrdao-1.2.3/dao/main.cc:1251: undefined reference to `ScsiIf::scan(int*, c
har*)'
/tmp/cdrdao-1.2.3/dao/main.cc:1263: undefined reference to `ScsiIf::checkMmc(boo
l*, bool*, bool*, bool*)'
./libdao.a(CdrDriver.o): In function `_ZN9CdrDriver12detectDriverEP6ScsiIfPm':
/tmp/cdrdao-1.2.3/dao/CdrDriver.cc:833: undefined reference to `ScsiIf::checkMmc
(bool*, bool*, bool*, bool*)'
collect2: ld returned 1 exit status
make: ***  Error 1
make: Leaving directory `/tmp/cdrdao-1.2.3/dao'
make: ***  Error 1
make: Leaving directory `/tmp/cdrdao-1.2.3'
make: ***  Error 2

Here is some relevant output from ./configure and make:

$ ./configure -with-scglib-lib=/opt/schily/include/scg -with-scglib-inc=/opt/
schily/include


  Building scsilib   : no (using native interface)
  Building pccts     : yes
  Building cdrdao    : yes
     OGG support     : no
     MP3 support     : no
  Building toc2cue   : yes
  Building cue2toc   : yes
  Building toc2mp3   : yes
  Building gcdmaster : no


make: Leaving directory `/tmp/cdrdao-1.2.3/paranoia'
Making all in dao
make: Entering directory `/tmp/cdrdao-1.2.3/dao'
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -I./../trackdb -I./../paranoia    -DDRIVER_T
ABLE_FILE=\"/usr/local/share/cdrdao/drivers\" -g -O2 -MT main.o -MD -MP -MF ".de
ps/main.Tpo" -c -o main.o main.cc; \
        then mv -f ".deps/main.Tpo" ".deps/main.Po"; else rm -f ".deps/main.Tpo"
; exit 1; fi
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -I./../trackdb -I./../paranoia    -DDRIVER_T
ABLE_FILE=\"/usr/local/share/cdrdao/drivers\" -g -O2 -MT dao.o -MD -MP -MF ".dep
s/dao.Tpo" -c -o dao.o dao.cc; \
        then mv -f ".deps/dao.Tpo" ".deps/dao.Po"; else rm -f ".deps/dao.Tpo"; e
xit 1; fi
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -I./../trackdb -I./../paranoia    -DDRIVER_T
ABLE_FILE=\"/usr/local/share/cdrdao/drivers\" -g -O2 -MT port.o -MD -MP -MF ".de
ps/port.Tpo" -c -o port.o port.cc; \
        then mv -f ".deps/port.Tpo" ".deps/port.Po"; else rm -f ".deps/port.Tpo"
; exit 1; fi
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -I./../trackdb -I./../paranoia    -DDRIVER_T
ABLE_FILE=\"/usr/local/share/cdrdao/drivers\" -g -O2 -MT data.o -MD -MP -MF ".de
ps/data.Tpo" -c -o data.o data.cc; \
        then mv -f ".deps/data.Tpo" ".deps/data.Po"; else rm -f ".deps/data.Tpo"
; exit 1; fi
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -I./../trackdb -I./../paranoia    -DDRIVER_T
ABLE_FILE=\"/usr/local/share/cdrdao/drivers\" -g -O2 -MT CdrDriver.o -MD -MP -MF
".deps/CdrDriver.Tpo" -c -o CdrDriver.o CdrDriver.cc; \
        then mv -f ".deps/CdrDriver.Tpo" ".deps/CdrDriver.Po"; else rm -f ".deps
/CdrDriver.Tpo"; exit 1; fi
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -I./../trackdb -I./../paranoia    -DDRIVER_T
ABLE_FILE=\"/usr/local/share/cdrdao/drivers\" -g -O2 -MT CDD2600Base.o -MD -MP -
MF ".deps/CDD2600Base.Tpo" -c -o CDD2600Base.o CDD2600Base.cc; \
        then mv -f ".deps/CDD2600Base.Tpo" ".deps/CDD2600Base.Po"; else rm -f ".
deps/CDD2600Base.Tpo"; exit 1; fi
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -I./../trackdb -I./../paranoia    -DDRIVER_T
ABLE_FILE=\"/usr/local/share/cdrdao/drivers\" -g -O2 -MT CDD2600.o -MD -MP -MF "
.deps/CDD2600.Tpo" -c -o CDD2600.o CDD2600.cc; \
        then mv -f ".deps/CDD2600.Tpo" ".deps/CDD2600.Po"; else rm -f ".deps/CDD
2600.Tpo"; exit 1; fi
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -I./../trackdb -I./../paranoia    -DDRIVER_T
ABLE_FILE=\"/usr/local/share/cdrdao/drivers\" -g -O2 -MT PlextorReader.o -MD -MP
-MF ".deps/PlextorReader.Tpo" -c -o PlextorReader.o PlextorReader.cc; \
        then mv -f ".deps/PlextorReader.Tpo" ".deps/PlextorReader.Po"; else rm -
f ".deps/PlextorReader.Tpo"; exit 1; fi
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -I./../trackdb -I./../paranoia    -DDRIVER_T
ABLE_FILE=\"/usr/local/share/cdrdao/drivers\" -g -O2 -MT GenericMMC.o -MD -MP -M
F ".deps/GenericMMC.Tpo" -c -o GenericMMC.o GenericMMC.cc; \
        then mv -f ".deps/GenericMMC.Tpo" ".deps/GenericMMC.Po"; else rm -f ".de
ps/GenericMMC.Tpo"; exit 1; fi
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -I./../trackdb -I./../paranoia    -DDRIVER_T
ABLE_FILE=\"/usr/local/share/cdrdao/drivers\" -g -O2 -MT SubChannel.o -MD -MP -M
F ".deps/SubChannel.Tpo" -c -o SubChannel.o SubChannel.cc; \
        then mv -f ".deps/SubChannel.Tpo" ".deps/SubChannel.Po"; else rm -f ".de
ps/SubChannel.Tpo"; exit 1; fi
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -I./../trackdb -I./../paranoia    -DDRIVER_T
ABLE_FILE=\"/usr/local/share/cdrdao/drivers\" -g -O2 -MT PQSubChannel16.o -MD -M
P -MF ".deps/PQSubChannel16.Tpo" -c -o PQSubChannel16.o PQSubChannel16.cc; \
        then mv -f ".deps/PQSubChannel16.Tpo" ".deps/PQSubChannel16.Po"; else rm
-f ".deps/PQSubChannel16.Tpo"; exit 1; fi
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -I./../trackdb -I./../paranoia    -DDRIVER_T
ABLE_FILE=\"/usr/local/share/cdrdao/drivers\" -g -O2 -MT PWSubChannel96.o -MD -M
P -MF ".deps/PWSubChannel96.Tpo" -c -o PWSubChannel96.o PWSubChannel96.cc; \
        then mv -f ".deps/PWSubChannel96.Tpo" ".deps/PWSubChannel96.Po"; else rm
-f ".deps/PWSubChannel96.Tpo"; exit 1; fi
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -I./../trackdb -I./../paranoia    -DDRIVER_T
ABLE_FILE=\"/usr/local/share/cdrdao/drivers\" -g -O2 -MT PQChannelEncoder.o -MD
-MP -MF ".deps/PQChannelEncoder.Tpo" -c -o PQChannelEncoder.o PQChannelEncoder.c
c; \
        then mv -f ".deps/PQChannelEncoder.Tpo" ".deps/PQChannelEncoder.Po"; els
e rm -f ".deps/PQChannelEncoder.Tpo"; exit 1; fi
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -I./../trackdb -I./../paranoia    -DDRIVER_T
ABLE_FILE=\"/usr/local/share/cdrdao/drivers\" -g -O2 -MT GenericMMCraw.o -MD -MP
-MF ".deps/GenericMMCraw.Tpo" -c -o GenericMMCraw.o GenericMMCraw.cc; \
        then mv -f ".deps/GenericMMCraw.Tpo" ".deps/GenericMMCraw.Po"; else rm -
f ".deps/GenericMMCraw.Tpo"; exit 1; fi
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -I./../trackdb -I./../paranoia    -DDRIVER_T
ABLE_FILE=\"/usr/local/share/cdrdao/drivers\" -g -O2 -MT PlextorReaderScan.o -MD
-MP -MF ".deps/PlextorReaderScan.Tpo" -c -o PlextorReaderScan.o PlextorReaderSc
an.cc; \
        then mv -f ".deps/PlextorReaderScan.Tpo" ".deps/PlextorReaderScan.Po"; e
lse rm -f ".deps/PlextorReaderScan.Tpo"; exit 1; fi
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -I./../trackdb -I./../paranoia    -DDRIVER_T
ABLE_FILE=\"/usr/local/share/cdrdao/drivers\" -g -O2 -MT RicohMP6200.o -MD -MP -
MF ".deps/RicohMP6200.Tpo" -c -o RicohMP6200.o RicohMP6200.cc; \
        then mv -f ".deps/RicohMP6200.Tpo" ".deps/RicohMP6200.Po"; else rm -f ".
deps/RicohMP6200.Tpo"; exit 1; fi
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -I./../trackdb -I./../paranoia    -DDRIVER_T
ABLE_FILE=\"/usr/local/share/cdrdao/drivers\" -g -O2 -MT TaiyoYuden.o -MD -MP -M
F ".deps/TaiyoYuden.Tpo" -c -o TaiyoYuden.o TaiyoYuden.cc; \
        then mv -f ".deps/TaiyoYuden.Tpo" ".deps/TaiyoYuden.Po"; else rm -f ".de
ps/TaiyoYuden.Tpo"; exit 1; fi
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -I./../trackdb -I./../paranoia    -DDRIVER_T
ABLE_FILE=\"/usr/local/share/cdrdao/drivers\" -g -O2 -MT YamahaCDR10x.o -MD -MP
-MF ".deps/YamahaCDR10x.Tpo" -c -o YamahaCDR10x.o YamahaCDR10x.cc; \
        then mv -f ".deps/YamahaCDR10x.Tpo" ".deps/YamahaCDR10x.Po"; else rm -f
".deps/YamahaCDR10x.Tpo"; exit 1; fi
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -I./../trackdb -I./../paranoia    -DDRIVER_T
ABLE_FILE=\"/usr/local/share/cdrdao/drivers\" -g -O2 -MT TeacCdr55.o -MD -MP -MF
".deps/TeacCdr55.Tpo" -c -o TeacCdr55.o TeacCdr55.cc; \
        then mv -f ".deps/TeacCdr55.Tpo" ".deps/TeacCdr55.Po"; else rm -f ".deps
/TeacCdr55.Tpo"; exit 1; fi
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -I./../trackdb -I./../paranoia    -DDRIVER_T
ABLE_FILE=\"/usr/local/share/cdrdao/drivers\" -g -O2 -MT SonyCDU920.o -MD -MP -M
F ".deps/SonyCDU920.Tpo" -c -o SonyCDU920.o SonyCDU920.cc; \
        then mv -f ".deps/SonyCDU920.Tpo" ".deps/SonyCDU920.Po"; else rm -f ".de
ps/SonyCDU920.Tpo"; exit 1; fi
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -I./../trackdb -I./../paranoia    -DDRIVER_T
ABLE_FILE=\"/usr/local/share/cdrdao/drivers\" -g -O2 -MT SonyCDU948.o -MD -MP -M
F ".deps/SonyCDU948.Tpo" -c -o SonyCDU948.o SonyCDU948.cc; \
        then mv -f ".deps/SonyCDU948.Tpo" ".deps/SonyCDU948.Po"; else rm -f ".de
ps/SonyCDU948.Tpo"; exit 1; fi
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -I./../trackdb -I./../paranoia    -DDRIVER_T
ABLE_FILE=\"/usr/local/share/cdrdao/drivers\" -g -O2 -MT ToshibaReader.o -MD -MP
-MF ".deps/ToshibaReader.Tpo" -c -o ToshibaReader.o ToshibaReader.cc; \
        then mv -f ".deps/ToshibaReader.Tpo" ".deps/ToshibaReader.Po"; else rm -
f ".deps/ToshibaReader.Tpo"; exit 1; fi
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -I./../trackdb -I./../paranoia    -DDRIVER_T
ABLE_FILE=\"/usr/local/share/cdrdao/drivers\" -g -O2 -MT CdTextEncoder.o -MD -MP
-MF ".deps/CdTextEncoder.Tpo" -c -o CdTextEncoder.o CdTextEncoder.cc; \
        then mv -f ".deps/CdTextEncoder.Tpo" ".deps/CdTextEncoder.Po"; else rm -
f ".deps/CdTextEncoder.Tpo"; exit 1; fi
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -I./../trackdb -I./../paranoia    -DDRIVER_T
ABLE_FILE=\"/usr/local/share/cdrdao/drivers\" -g -O2 -MT Settings.o -MD -MP -MF
".deps/Settings.Tpo" -c -o Settings.o Settings.cc; \
        then mv -f ".deps/Settings.Tpo" ".deps/Settings.Po"; else rm -f ".deps/S
ettings.Tpo"; exit 1; fi
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -I./../trackdb -I./../paranoia    -DDRIVER_T
ABLE_FILE=\"/usr/local/share/cdrdao/drivers\" -g -O2 -MT ScsiIf-win.o -MD -MP -M
F ".deps/ScsiIf-win.Tpo" -c -o ScsiIf-win.o ScsiIf-win.cc; \
        then mv -f ".deps/ScsiIf-win.Tpo" ".deps/ScsiIf-win.Po"; else rm -f ".de
ps/ScsiIf-win.Tpo"; exit 1; fi
rm -f libdao.a
ar cru libdao.a main.o dao.o port.o data.o CdrDriver.o CDD2600Base.o CDD2600.o P
lextorReader.o GenericMMC.o SubChannel.o PQSubChannel16.o PWSubChannel96.o PQCha
nnelEncoder.o GenericMMCraw.o PlextorReaderScan.o RicohMP6200.o TaiyoYuden.o Yam
ahaCDR10x.o TeacCdr55.o SonyCDU920.o SonyCDU948.o ToshibaReader.o CdTextEncoder.
o Settings.o ScsiIf-win.o
ranlib libdao.a
g++ -DDRIVER_TABLE_FILE=\"/usr/local/share/cdrdao/drivers\" -g -O2   -o cdrdao.e
xe  main.o ./libdao.a ../paranoia/libcdda_paranoia.a ../trackdb/libtrackdb.a

Thanks, and sorry for the length of the post.

George Luft
Trumbull, CT