Según yo entiendo, system() ejecuta el comando que pongas entre comillas como si fuese MS-DOS o en tu caso, el Terminal. ¿El comando "eject" funciona desde terminal para abrir tu CD-ROM?
Es exactamente lo que dice Physlet, system() es dependiente de la plataforma, lo que quiere decir que no funciona igual en Linux que en Windows.
En Linux tengo entendido que hay un script que te abre la bandeja del cd, que es /usr/bin/eject, osea que funcionaría con
system("/usr/bin/eject");
Pero de todas formas, eso no lo arreglará, porque aunque es necesario que lo pongas para que saque la bandeja del CD, no es lo que causa tu error.
Antes de continuar, quería comentarte de todas formas que si tu main() es de tipo int, tienes que retornar un numero, normalmente un 0, así que el main() queda como
int main() {
system("/usr/bin/eject");
return 0;
}
Estas lineas:
/tmp/ccn1Zr7O.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
Son siempre errores del enlazador (linker), lo que normalmente quiere decir que falta algún archivo para que pueda enlazarse todo.
Pero no uno de esos archivos de inclusión que incluyes con #include (que redundancia) sino los archivos del propio compilador. Las librerias ya compiladas.
El problema es que cuando compilas con gcc o g++ tienes que tener claro si vas a compilar código C o código C++, porque gcc tiene unas librerias y usa unos archivos diferentes a g++. Tu problema es ese, estás incluyendo la librería <iostream> que es una libreria de C++, y seguramente para compilar estés usando el comando gcc.
Dos soluciones: o quitar la libreria <iostream> (puesto que no la estas usando) o en lugar de compilar con gcc compilas con g++.
Saludos!