LINUX.ORG.RU

Помогите пожалуйста откомпилить программу

 ,


0

1

Всем добра! Помогите пожалуйста откомпилить программу, ситуация такова что в новых проприетарных драйверах под графические карты отсутствует очень важная библиотека AMD ADL, что вместо нее для замены предложили АМДшники не ясно, библиотека не критична но важна - программы работающие с графикой работают и без нее но без нее они немогут управлять многими важными параметрами граф.карт - частотой вращения вентиляторов, частотами напряжениями и т.д. Данная библиотека выложена на сайте АМД в исходниках (Зайти туда с недавних пор можно только через VPN или Tor, наверно Роскомнадзор постарался) https://developer.amd.com/display-library-adl-sdk/ Скачиваю последнюю 10-ую версию, распаковываю, в папке ADLUTIL лежат сами исходники, В файле Linux build instructions.txt инструкция по компиляции:

makefile is for building in Linux environment. Run make to create executable file adlutil Run make clean to remove adlutil ( equivalent with rm adlutil)

Without the makefile, the easiest way to build this is to run the following command:

gcc main.c o adlutil DLINUX ldl I ../include/

-ldl (all lower cases), -I (capital i)

Результаты команды make: make: *** No targets specified and no makefile found. Stop.

Результаты команды gcc main.c -o adlutil.sln -DLINUX -ldl -I /home/user/ADL_SDK/include

In file included from ../include/adl_sdk.h:19:0,
from main.c:15:
../include/adl_structures.h:1757:2: error: unknown type name ‘wchar_t’
wchar_t strPathName[ADL_MAX_PATH];
^
../include/adl_structures.h:1759:2: error: unknown type name ‘wchar_t’
wchar_t strFileName[ADL_APP_PROFILE_FILENAME_LENGTH];
^
../include/adl_structures.h:1761:2: error: unknown type name ‘wchar_t’
wchar_t strTimeStamp[ADL_APP_PROFILE_TIMESTAMP_LENGTH];
^
../include/adl_structures.h:1763:2: error: unknown type name ‘wchar_t’
wchar_t strVersion[ADL_APP_PROFILE_VERSION_LENGTH];
^
../include/adl_structures.h:1775:5: error: unknown type name ‘wchar_t’
wchar_t strPathName[ADL_MAX_PATH];
^
../include/adl_structures.h:1777:5: error: unknown type name ‘wchar_t’
wchar_t strFileName[ADL_APP_PROFILE_FILENAME_LENGTH];
^
../include/adl_structures.h:1779:5: error: unknown type name ‘wchar_t’
wchar_t strTimeStamp[ADL_APP_PROFILE_TIMESTAMP_LENGTH];
^
../include/adl_structures.h:1781:5: error: unknown type name ‘wchar_t’
wchar_t strVersion[ADL_APP_PROFILE_VERSION_LENGTH];
^
../include/adl_structures.h:2554:13: error: unknown type name ‘bool’
bool qualityDetectionEnabled;
^
../include/adl_structures.h:2567:13: error: unknown type name ‘bool’
bool linkProtectionEnabled; // Read-only
^
main.c: In function ‘GetValue’:
main.c:814:17: warning: format ‘%d’ expects argument of type ‘int *’, but argument 4 has type ‘int’ [-Wformat=]
fscanf_s( file,"%32s %d\n", sField, 33, iValue);
^
main.c:814:17: warning: too many arguments for format [-Wformat-extra-args]
main.c: In function ‘GetHex’:
main.c:827:17: warning: format ‘%X’ expects argument of type ‘unsigned int *’, but argument 4 has type ‘int’ [-Wformat=]
fscanf_s( file,"%32s %X\n", sField, 33, iValue);
^
main.c:827:17: warning: too many arguments for format [-Wformat-extra-args]
main.c: In function ‘GetFloat’:
main.c:840:17: warning: format ‘%f’ expects argument of type ‘float *’, but argument 4 has type ‘int’ [-Wformat=]
fscanf_s( file,"%32s %f\n", sField, 33, fValue);
^
main.c:840:17: warning: too many arguments for format [-Wformat-extra-args]

Может поможет кто? Все необходимое для компиляции у меня установлено, чтото недумаю что АМД допустили где либо ошибки, но тем не менее чтото не так

И вот это место из библиотеки adl_structures.h на которой происходит ошибка

/////////////////////////////////////////////////////////////////////////////////////////////
///\brief Structure containing information about an application
///
/// This structure is used to store basic information of an application
/// \nosubgrouping
////////////////////////////////////////////////////////////////////////////////////////////
typedef struct _ADLApplicationDataX2
{
/// Path Name
wchar_t strPathName[ADL_MAX_PATH];
/// File Name
wchar_t strFileName[ADL_APP_PROFILE_FILENAME_LENGTH];
/// Creation timestamp
wchar_t strTimeStamp[ADL_APP_PROFILE_TIMESTAMP_LENGTH];
/// Version
wchar_t strVersion[ADL_APP_PROFILE_VERSION_LENGTH];
}ADLApplicationDataX2;

поправте main.c (2 строки добавте)

#if defined (LINUX) #include <wchar.h> #include <stdbool.h> #include "../include/adl_sdk.h" #include <dlfcn.h> //dyopen, dlsym, dlclose #include <errno.h> // fopen_s #include <stdlib.h> #include <string.h> //memeset

// Linux equivalent of sprintf_s

anonymous ()

Ребята. Ну что вы такие? Пользуйтесь тегами, и тогда символ переноса строки не будет исчезать!

[code] код [/code]

anonymous ()
Ответ на: комментарий от anonymous

Я вначале подумал, что они просто набор букв пихают. Ан нет, кто-то ещё распарсивает это

UVV ★★★★★ ()

Результаты команды make: make: *** No targets specified and no makefile found. Stop.

из какого каталога?

darkenshvein ★★★★★ ()
Ответ на: комментарий от anonymous

Теперь вот такие вот ошибки полезли

main.c: In function ‘GetValue’:
main.c:814:17: warning: format ‘%d’ expects argument of type ‘int *’, but argument 4 has type ‘int’ [-Wformat=]
  fscanf_s( file,"%32s %d\n", sField, 33, iValue);
                 ^
main.c:814:17: warning: too many arguments for format [-Wformat-extra-args]
main.c: In function ‘GetHex’:
main.c:827:17: warning: format ‘%X’ expects argument of type ‘unsigned int *’, but argument 4 has type ‘int’ [-Wformat=]
  fscanf_s( file,"%32s %X\n", sField, 33, iValue);
                 ^
main.c:827:17: warning: too many arguments for format [-Wformat-extra-args]
main.c: In function ‘GetFloat’:
main.c:840:17: warning: format ‘%f’ expects argument of type ‘float *’, but argument 4 has type ‘int’ [-Wformat=]
  fscanf_s( file,"%32s %f\n", sField, 33, fValue);
                 ^
main.c:840:17: warning: too many arguments for format [-Wformat-extra-args]

barmaley99 ()
#if defined (LINUX)
// Linux equivalent of fscanf_s
#define fscanf_s fscanf
#endif

Очевидно же, что этот говнокод никто не тестировал. Забей, не соберешь ты его под Линуксом.

anonymous ()
Ответ на: комментарий от barmaley99

«warning:» это не ошибки, а предупреждения. Тебе нужно искать точки остановки компиляции со словами «error:».

justAmoment ★★★★★ ()

добавь в ../include/adl_defines.h

#include <stddef.h>
#include <stdbool.h>

и собирай так

gcc main.c -o adlutil -ldl -DLINUX -I ../include/

Iron_Bug ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.