Thanks for the report - good to learn that Mandriva is on top of things and uses these flags.
I think adding the libcdio and libiso9660 libraries will fix things, which is basically adding to lib/cdio++/Makefile the line: libiso9660___la_LIBADD = $(LIBISO9660_LIBS) $(LIBCDIO_LIBS The following diff have been applied to CVS sources. If this doesn't do the trick or there's more, let me know.
Thanks again. Götz Waschk writes: > Hi Rocky, > > libcdio 0.81 does not build on Mandriva 2009.0 with the new default > linker flags that contain both --as-needed and --no-undefined flags: > > /bin/sh ../../libtool --tag=CXX --mode=link g++ -O2 -g -pipe > -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector > --param=ssp-buffer-size=4 -fomit-frame > -pointer -march=i586 -mtune=generic -fasynchronous-unwind-tables > -Wl,--as-needed -Wl,--no-undefined -o libiso9660++.la -rpath /usr/lib > iso9660.lo -lm > g++ -shared -nostdlib > /usr/lib/gcc/i586-manbo-linux-gnu/4.3.2/../../../crti.o > /usr/lib/gcc/i586-manbo-linux-gnu/4.3.2/crtbeginS.o .libs/iso9660.o > -L/usr/li > b/gcc/i586-manbo-linux-gnu/4.3.2 > -L/usr/lib/gcc/i586-manbo-linux-gnu/4.3.2/../../.. -lstdc++ -lm -lc > -lgcc_s /usr/lib/gcc/i586-manbo-linux-gnu/4.3.2/crtendS. > o /usr/lib/gcc/i586-manbo-linux-gnu/4.3.2/../../../crtn.o -march=i586 > -mtune=generic -Wl,--as-needed -Wl,--no-undefined -Wl,-soname > -Wl,libiso9660++.so.0 -o > .libs/libiso9660++.so.0.0.0 > .libs/iso9660.o: In function `ISO9660::PVD::get_volumeset_id()': > /home/goetz/svn/libcdio/BUILD/libcdio-0.81/lib/cdio++/iso9660.cpp:294: > undefined reference to `iso9660_get_volumeset_id' > .libs/iso9660.o: In function `ISO9660::PVD::get_volume_id()': > /home/goetz/svn/libcdio/BUILD/libcdio-0.81/lib/cdio++/iso9660.cpp:284: > undefined reference to `iso9660_get_volume_id' > .libs/iso9660.o: In function `ISO9660::PVD::get_system_id()': > /home/goetz/svn/libcdio/BUILD/libcdio-0.81/lib/cdio++/iso9660.cpp:274: > undefined reference to `iso9660_get_system_id' > .libs/iso9660.o: In function `ISO9660::PVD::get_root_lsn()': > /home/goetz/svn/libcdio/BUILD/libcdio-0.81/lib/cdio++/iso9660.cpp:264: > undefined reference to `iso9660_get_root_lsn' > .libs/iso9660.o: In function `ISO9660::PVD::get_pvd_version()': > /home/goetz/svn/libcdio/BUILD/libcdio-0.81/lib/cdio++/iso9660.cpp:255: > undefined reference to `iso9660_get_pvd_version' > .libs/iso9660.o: In function `ISO9660::PVD::get_pvd_type()': > /home/goetz/svn/libcdio/BUILD/libcdio-0.81/lib/cdio++/iso9660.cpp:246: > undefined reference to `iso9660_get_pvd_type' > .libs/iso9660.o: In function `ISO9660::PVD::get_pvd_space_size()': > /home/goetz/svn/libcdio/BUILD/libcdio-0.81/lib/cdio++/iso9660.cpp:241: > undefined reference to `iso9660_get_pvd_space_size' > > .libs/iso9660.o: In function `ISO9660::PVD::get_pvd_id()': > /home/goetz/svn/libcdio/BUILD/libcdio-0.81/lib/cdio++/iso9660.cpp:235: > undefined reference to `iso9660_get_pvd_id' > .libs/iso9660.o: In function `ISO9660::PVD::get_publisher_id()': > /home/goetz/svn/libcdio/BUILD/libcdio-0.81/lib/cdio++/iso9660.cpp:229: > undefined reference to `iso9660_get_publisher_id' > .libs/iso9660.o: In function `ISO9660::PVD::get_preparer_id()': > /home/goetz/svn/libcdio/BUILD/libcdio-0.81/lib/cdio++/iso9660.cpp:219: > undefined reference to `iso9660_get_preparer_id' > .libs/iso9660.o: In function `ISO9660::PVD::get_pvd_block_size()': > /home/goetz/svn/libcdio/BUILD/libcdio-0.81/lib/cdio++/iso9660.cpp:209: > undefined reference to `iso9660_get_pvd_block_size' > .libs/iso9660.o: In function `ISO9660::PVD::get_application_id()': > /home/goetz/svn/libcdio/BUILD/libcdio-0.81/lib/cdio++/iso9660.cpp:203: > undefined reference to `iso9660_get_application_id' > .libs/iso9660.o: In function > `ISO9660::IFS::read_superblock_fuzzy(unsigned char, unsigned short)': > /home/goetz/svn/libcdio/BUILD/libcdio-0.81/lib/cdio++/iso9660.cpp:197: > undefined reference to `iso9660_ifs_fuzzy_read_superblock' > .libs/iso9660.o: In function `ISO9660::IFS::read_superblock(unsigned > char, unsigned short)': > /home/goetz/svn/libcdio/BUILD/libcdio-0.81/lib/cdio++/iso9660.cpp:181: > undefined reference to `iso9660_ifs_read_superblock' > .libs/iso9660.o: In function `ISO9660::IFS::read_pvd()': > /home/goetz/svn/libcdio/BUILD/libcdio-0.81/lib/cdio++/iso9660.cpp:162: > undefined reference to `iso9660_ifs_read_pvd' > .libs/iso9660.o: In function `ISO9660::IFS::open_fuzzy(char const*, > unsigned char, unsigned short)': > /home/goetz/svn/libcdio/BUILD/libcdio-0.81/lib/cdio++/iso9660.cpp:150: > undefined reference to `iso9660_open_fuzzy_ext' > .libs/iso9660.o: In function `ISO9660::IFS::is_xa()': > /home/goetz/svn/libcdio/BUILD/libcdio-0.81/lib/cdio++/iso9660.cpp:131: > undefined reference to `iso9660_ifs_is_xa' > .libs/iso9660.o: In function `ISO9660::IFS::get_joliet_level()': > /home/goetz/svn/libcdio/BUILD/libcdio-0.81/lib/cdio++/iso9660.cpp:122: > undefined reference to `iso9660_ifs_get_joliet_level' > .libs/iso9660.o: In function `ISO9660::IFS::find_lsn(int)': > /home/goetz/svn/libcdio/BUILD/libcdio-0.81/lib/cdio++/iso9660.cpp:113: > undefined reference to `iso9660_ifs_find_lsn' > .libs/iso9660.o: In function `ISO9660::IFS::close()': > /home/goetz/svn/libcdio/BUILD/libcdio-0.81/lib/cdio++/iso9660.cpp:99: > undefined reference to `iso9660_close' > .libs/iso9660.o: In function `ISO9660::FS::read_superblock(unsigned char)': > /home/goetz/svn/libcdio/BUILD/libcdio-0.81/lib/cdio++/iso9660.cpp:62: > undefined reference to `iso9660_fs_read_superblock' > .libs/iso9660.o: In function `ISO9660::FS::read_pvd()': > /home/goetz/svn/libcdio/BUILD/libcdio-0.81/lib/cdio++/iso9660.cpp:47: > undefined reference to `iso9660_fs_read_pvd' > .libs/iso9660.o: In function `ISO9660::FS::find_lsn(int)': > /home/goetz/svn/libcdio/BUILD/libcdio-0.81/lib/cdio++/iso9660.cpp:36: > undefined reference to `iso9660_find_fs_lsn' > .libs/iso9660.o: In function `ISO9660::FS::readdir(char const*, > std::vector<ISO9660::Stat*, std::allocator<ISO9660::Stat*> >&, bool)': > /home/goetz/svn/libcdio/BUILD/libcdio-0.81/lib/cdio++/iso9660.cpp:74: > undefined reference to `iso9660_fs_readdir' > /home/goetz/svn/libcdio/BUILD/libcdio-0.81/lib/cdio++/iso9660.cpp:77: > undefined reference to `_cdio_list_begin' > /home/goetz/svn/libcdio/BUILD/libcdio-0.81/lib/cdio++/iso9660.cpp:79: > undefined reference to `_cdio_list_node_data' > /home/goetz/svn/libcdio/BUILD/libcdio-0.81/lib/cdio++/iso9660.cpp:77: > undefined reference to `_cdio_list_node_next' > /home/goetz/svn/libcdio/BUILD/libcdio-0.81/lib/cdio++/iso9660.cpp:82: > undefined reference to `_cdio_list_free' > collect2: ld returned 1 exit status > make[3]: *** [libiso9660++.la] Fehler 1 > make[3]: Leaving directory > `/home/goetz/svn/libcdio/BUILD/libcdio-0.81/lib/cdio++' > make[2]: *** [all-recursive] Fehler 1 > make[2]: Leaving directory `/home/goetz/svn/libcdio/BUILD/libcdio-0.81/lib' > make[1]: *** [all-recursive] Fehler 1 > make[1]: Leaving directory `/home/goetz/svn/libcdio/BUILD/libcdio-0.81' > make: *** [all] Fehler 2 > > > I can either disable the --no-undefined flag or add libcdio.la and > libiso9660.la to libiso9660++'s linker command. > > Regards, Götz > > -- > AL I:40: Do what thou wilt shall be the whole of the Law. > >
