Создайте библиотеку для мониторинга датчиков IPMI с помощью freeipmi/ipmimonitoring-sensor.c

Я работаю над проектом Embedded Linux Project, чтобы определить состояние оборудования с помощью средства IPMI, чтобы узнать температуру процессора, материнской платы и состояние вентиляторов. Я изменил ipmimonitoring-sensor.c, чтобы сообщить о статусе.

Есть три файла:

+-- z_test_get_engine_status.c
+-- ipmi_sensors.c
+-- ipmi_sensors.h

Если я положу эти три файла в один проект, все будет хорошо. Но если я перенесу ipmi_sensors.c и ipmi_sensors.h в другой проект для создания статической или совместно используемой библиотеки, тогда создайте z_test_get_engine_status.c с этой библиотекой. Я получил следующие сообщения об ошибках:

make all 
Building file: ../src/z_test_get_engine_status.c
Invoking: GCC C Compiler
gcc -I"/home/cc/project/ipmi_sensors" -O0 -g3 -Wall -c -fmessage -length=0 -fPIC -MMD -MP -MF"src/z_test_get_engine_status.d" -MT"src/z_test_get_engine_status.d" -o "src/z_test_get_engine_status.o" "../src/z_test_get_engine_status.c"
Finished building: ../src/z_test_get_engine_status.c

Building target: z_test_get_engine_status
Invoking: GCC C Linker
gcc -L"/home/cc/project/ipmi_sensors/Debug" -o 
"z_test_get_engine_status"  ./src/z_test_get_engine_status.o   -lipmimonitoring -lipmi_sensors
/home/cc/project/ipmi_sensors/Debug/libipmi_sensors.a(ipmi_sensors.o): In function `get_hw_status':
/home/cc/project/ipmi_sensors/Debug/../ipmi_sensors.c:269: undefined reference to `ipmi_monitoring_init'
/home/cc/project/ipmi_sensors/Debug/../ipmi_sensors.c:270: undefined reference to `ipmi_monitoring_ctx_strerror'
makefile:30: recipe for target 'z_test_get_engine_status' failed
/home/cc/project/ipmi_sensors/Debug/../ipmi_sensors.c:275: undefined reference to `ipmi_monitoring_ctx_create'
/home/cc/project/ipmi_sensors/Debug/../ipmi_sensors.c:281: undefined reference to `ipmi_monitoring_ctx_sdr_cache_directory'
/home/cc/project/ipmi_sensors/Debug/../ipmi_sensors.c:283: undefined reference to `ipmi_monitoring_ctx_errormsg'
/home/cc/project/ipmi_sensors/Debug/../ipmi_sensors.c:292: undefined reference to `ipmi_monitoring_ctx_sensor_config_file'
/home/cc/project/ipmi_sensors/Debug/../ipmi_sensors.c:294: undefined reference to `ipmi_monitoring_ctx_errormsg'
/home/cc/project/ipmi_sensors/Debug/../ipmi_sensors.c:299: undefined reference to `ipmi_monitoring_ctx_sensor_config_file'
/home/cc/project/ipmi_sensors/Debug/../ipmi_sensors.c:300: undefined reference to `ipmi_monitoring_ctx_errormsg'
/home/cc/project/ipmi_sensors/Debug/../ipmi_sensors.c:343: undefined reference to `ipmi_monitoring_sensor_readings_by_record_id'
/home/cc/project/ipmi_sensors/Debug/../ipmi_sensors.c:348: undefined reference to `ipmi_monitoring_ctx_errormsg'
/home/cc/project/ipmi_sensors/Debug/../ipmi_sensors.c:354: undefined reference to `ipmi_monitoring_sensor_readings_by_record_id'
/home/cc/project/ipmi_sensors/Debug/../ipmi_sensors.c:359: undefined reference to `ipmi_monitoring_ctx_errormsg'
/home/cc/project/ipmi_sensors/Debug/../ipmi_sensors.c:365: undefined reference to `ipmi_monitoring_sensor_readings_by_sensor_type'
/home/cc/project/ipmi_sensors/Debug/../ipmi_sensors.c:370: undefined reference to `ipmi_monitoring_ctx_errormsg'
/home/cc/project/ipmi_sensors/Debug/../ipmi_sensors.c:396: undefined reference to `ipmi_monitoring_sensor_read_record_id'
/home/cc/project/ipmi_sensors/Debug/../ipmi_sensors.c:397: undefined reference to `ipmi_monitoring_ctx_errormsg'
/home/cc/project/ipmi_sensors/Debug/../ipmi_sensors.c:402: undefined reference to `ipmi_monitoring_sensor_read_sensor_name'
/home/cc/project/ipmi_sensors/Debug/../ipmi_sensors.c:403: undefined reference to `ipmi_monitoring_ctx_errormsg'
/home/cc/project/ipmi_sensors/Debug/../ipmi_sensors.c:410: undefined reference to `ipmi_monitoring_sensor_read_sensor_state'
/home/cc/project/ipmi_sensors/Debug/../ipmi_sensors.c:412: undefined reference to `ipmi_monitoring_ctx_errormsg'
/home/cc/project/ipmi_sensors/Debug/../ipmi_sensors.c:378: undefined reference to `ipmi_monitoring_sensor_iterator_next'
/home/cc/project/ipmi_sensors/Debug/../ipmi_sensors.c:446: undefined reference to `ipmi_monitoring_ctx_destroy'
collect2: error: ld returned 1 exit status
make: *** [z_test_get_engine_status] Error 1

Фрагмент кода ipmi_sensors.h, как показано ниже

#include <ipmi_monitoring.h>
#include <ipmi_monitoring_bitmasks.h>

void _init_ipmi_config (struct ipmi_monitoring_ipmi_config *ipmi_config);

int ipmi_error_code(int record_id);
int get_hw_status(struct ipmi_monitoring_ipmi_config *ipmi_config);

Я прочитал, что Как решить ошибку "неопределенная ссылка на функцию"?

Любая помощь приветствуется. Заранее спасибо.

0 ответов

Другие вопросы по тегам