PRX builds using psp-cmake fail with _exit linker error and missing exports.exp

Abierto
#309 5 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
48/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
c, cmake
Área
build-system

Línea de trabajo

Reproduce el fallo de pspsdk/src/samples/prx/testprx usando el CMakeLists.txt mostrado y los comandos de compilación de psp-cmake. Inspecciona cómo add_prx_module gestiona exports.exp y la configuración de enlazado de PRX; el trabajo está terminado cuando el proyecto se compila sin copiar exports.exp y sin el error del enlazador por _exit no definido.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

When compiling any PRX project using psp-cmake, the build fails with a missing _exit symbol during linking. In addition, if the .exp file is not manually copied to the build directory, the generation of exports.c fails due to Could not open file exports.exp.

Steps to Reproduce

  1. Clone pspsdk
git clone https://github.com/pspdev/pspsdk/
  1. Create any minimal PRX project (e.g., in pspsdk/src/samples/prx/testprx) with the following CMakeLists.txt:
cmake_minimum_required(VERSION 3.11)

project(testprx C)

add_prx_module(${PROJECT_NAME}
    main.c
    exports.exp
)

install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.prx DESTINATION .)
  1. Run:
cd pspsdk/src/samples/prx/testprx
psp-cmake -Bbuild
cmake --build build

Output

[ 25%] Generating exports.c from exports.exp for target testprx
Could not open file exports.exp
[ 50%] Building C object CMakeFiles/testprx.dir/main.c.obj
[ 75%] Building C object CMakeFiles/testprx.dir/exports.c.obj
[100%] Linking C executable testprx
/root/pspdev/bin/../lib/gcc/psp/.../ld: warning: cannot find entry symbol module_start; defaulting to 00000000
/root/pspdev/bin/../lib/gcc/psp/15.1.1/../../../../psp/bin/ld: /root/pspdev/psp/lib/libc.a(libc_a-abort.o): in function `abort':
/home/runner/work/pspdev/pspdev/build/psptoolchain/build/psptoolchain-allegrex/build/newlib/build-psp/psp/newlib/../../../newlib/libc/stdlib/abort.c:59:(.text+0x10): undefined reference to `_exit'
collect2: error: ld returned 1 exit status

Note: copying exports.exp to the build directory, or specifing the absolute path to it, fixes Could not open file exports.exp.

Lenguaje dominante
C
Estrellas
1.2k
Forks
190
Merge medio
1 d 18 h
PR fusionados (30 d)
8

Preparar el entorno

  • Incluye un Dockerfile o un archivo de Docker Compose
  • Sin plantilla de pull request
  • Sin guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de pspdev/pspsdk

Todos los issues de pspdev/pspsdk

Issues similares

Más issues de C

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.