Cross Compilazione Mpv

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
RTK901
Prode Principiante
Messaggi: 86
Iscrizione: sabato 17 settembre 2022, 12:23
Desktop: Lxqt
Distribuzione: Lubuntu18.10
Sesso: Maschile

Cross Compilazione Mpv

Messaggio da RTK901 »

Salve a tutti

Ho la necessità di compilare il player Mpv dai sorgenti per la versione Windows, ho letto questa pagina:

Codice: Seleziona tutto

https://github.com/mpv-player/mpv/blob/master/DOCS/compile-windows.md
Ho installato anche python3 e mingw64-mingw32
Con git ho scaricato mpv in home e mxe in /opt, ho poi dato queste istruzioni:

Codice: Seleziona tutto

echo "JOBS := 4" >> settings.mk in /opt/mxe
echo "MXE_TARGETS := i686-w64-mingw32.static" >> settings.mk
export PATH=/opt/mxe/usr/bin/:$PATH
DEST_OS=win32 TARGET=i686-w64-mingw32.static ./waf configure

Seguito da:

Codice: Seleziona tutto

python3 ./bootstrap.py  In /home/mpv si avvia la compilazione
appaiono degli errori:

Codice: Seleziona tutto

Checking for program 'i686-w64-mingw32.static-gcc'
not found
find program=['i686-w64-mingw32.static-gcc'] paths=['/opt/mxe/usr/bin/', '/usr/local/bin', '/usr/bin', '/bin', '/usr/local/games', '/usr/games'] var='CC' -> None
from /home/mpv: Could not find the program ['i686-w64-mingw32.static-gcc']
Ho cambiato la linea con:

Codice: Seleziona tutto

Checking for program 'i686-w64-mingw32-gcc'
/usr/bin/i686-w64-mingw32-gcc e il risultato:
find program=['i686-w64-mingw32-gcc'] paths=['/opt/mxe/usr/bin/', '/usr/local/bin', '/usr/bin', '/bin', '/usr/local/games', '/usr/games'] var='CC' -> ['/usr/bin/i686-w64-mingw32-gcc']
e fino a qui ok, ma poi non trova il seguente programma che non so da dove lo legga visto
che dalla linea di comando non ho scritto pkg-config:

Codice: Seleziona tutto

Checking for program 'i686-w64-mingw32-pkg-config'
not found
find program=['i686-w64-mingw32-pkg-config'] paths=['/opt/mxe/usr/bin/', '/usr/local/bin', '/usr/bin', '/bin', '/usr/local/games', '/usr/games'] var='PKG_CONFIG' -> None
from /home/mpv: Could not find the program ['i686-w64-mingw32-pkg-config']
Quello che posso fare e fare un link simbolico ad un programma simile che penso svolga la stessa funzione:

Codice: Seleziona tutto

/usr/bin/i386-linux-gnu-pkg-config
ma dove lo trovo il file che contiene la direttiva per andare a cercare pkg-config?
non ci sono file make nella cartella mpv, sempre che venga utilizzato un file make.
prima di trovarmi con un altro errore di questo tipo. :D !

Avete delle idee, chiedo a chi si occupa di programmazione/compilazione.

Grazie a tutti

Ciao
RTK901
Prode Principiante
Messaggi: 86
Iscrizione: sabato 17 settembre 2022, 12:23
Desktop: Lxqt
Distribuzione: Lubuntu18.10
Sesso: Maschile

Re: Cross Compilazione Mpv

Messaggio da RTK901 »

nessuno si occupa di compilazione! :muro:
Avatar utente
Clover
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 298
Iscrizione: giovedì 30 agosto 2012, 14:04
Desktop: KDE
Distribuzione: Kubuntu x86_64

Re: Cross Compilazione Mpv

Messaggio da Clover »

Compilare i programmi spesso porta a errori di pacchetti mancanti o roba simile, è normale ed è il motivo per cui è l'ultima cosa che si fa ed è meglio usare pacchetti già compilati se possibile.

Per quanto riguarda l'errore che ti restituisce, la cosa migliore è provare a cercare su google e vedere cosa trovi, poi dovrai andare per tentativi.
Ricorda di cancellare ogni volta le cartelle che la compilazione genera altrimenti rischi di finire negli stessi errori anche se magari la dipendenza è stata soddisfatta.
Un altro consiglio che ti d'ho è di fare un clone del pc perché la compilazione spesso "sporca" il sistema e potresti essere costretto a tornare indietro.
Quando avrai capito come funziona la compilazione di sorgenti, valuta anche di approfondire la generazione di pacchetti deb... in modo che puoi usare una macchina virtuale per compilare e generare i pacchetti da poi installare sul sistema principale.

Per iniziare cmq puoi verificare di aver installato tutti i pacchetti base necessari a compilare sorgenti che per la 22.04 lts sono:

Codice: Seleziona tutto

sudo apt-get install build-essential libasound2-dev libass-dev libffms2-dev libfftw3-dev libgl1-mesa-dev libglu1-mesa-dev libgtk2.0-dev libhunspell-dev liblua5.1-dev intltool wx3.0-headers libwxgtk3.0-gtk3-0v5 libwxgtk3.0-gtk3-dev luajit libboost-all-dev
nota: tieni conto che potrebbero servirti anche altri pacchetti, questi sono quelli che uso io di solito per i programmi che compilo... cmq li riconosci facilmente dalla sigla finale "-dev"
RTK901
Prode Principiante
Messaggi: 86
Iscrizione: sabato 17 settembre 2022, 12:23
Desktop: Lxqt
Distribuzione: Lubuntu18.10
Sesso: Maschile

Re: Cross Compilazione Mpv

Messaggio da RTK901 »

Ok, ti ringrazio molto per le info, quello che nel frattenpo ho fatto e passare dalla linea di comando
la variabile PKG_CONFIG_PATH:

Codice: Seleziona tutto

python3  ./bootstrap.py DEST_OS=win32 PKG_CONFIG_PATH="/usr/bin/i686-linux-gnu-pkg-config/"  
TARGET=i686-w64-mingw32 ./waf configure 
ma dice come prima che non trova il programma: i686-w64-mingw32-pkg-config.
Non sono esperto, ma cerco di provare a fare come viene spiegato sui siti come lxqt o lumina-desktop.
Alcune volte funziona altre volte no. Sorgono problemi.

Ciao
RTK901
Prode Principiante
Messaggi: 86
Iscrizione: sabato 17 settembre 2022, 12:23
Desktop: Lxqt
Distribuzione: Lubuntu18.10
Sesso: Maschile

Re: Cross Compilazione Mpv

Messaggio da RTK901 »

Ho creato un link simbolico i686-w64-mingw32-pkg-config nella cartella /usr/bin che punta nella stessa cartella
a i686-linux-gnu--pkg-onfig.

Inizia la compilazione, va oltre queste due primi step, ma non la termina, e questo e il log:

Codice: Seleziona tutto

waflib.Errors.BuildError: Build failed
 -> task in 'testprog' failed with exit status 1 (run with -v to display more information)

from /home/../lxqt/mpv: The configuration failed
no
-------------------------------------------------------------------------
Checking for Android Media APIs
android not found
-------------------------------------------------------------------------
Checking for tvOS environment
==>
#include <TargetConditionals.h>
#include <assert.h>
int main(int argc, char **argv)
{ static_assert(TARGET_OS_TV, "TARGET_OS_TV defined to zero!"); return 0; }
<==
[1/2] Compiling [32mbuild/.conf_check_a34ef163abcd18bf3aa56d0f72118dbe/test.c[0m

['/usr/bin/i686-w64-mingw32-gcc', '-D_ISOC99_SOURCE', '-D_GNU_SOURCE', '-D_FILE_OFFSET_BITS=64', '-Wall', '-std=c11', '-O2', '-g', '-Werror=implicit-function-declaration', '-Wno-error=deprecated-declarations', '-Wno-error=unused-function', '-Wempty-body', '-Wdisabled-optimization', '-Wstrict-prototypes', '-Wno-format-zero-length', '-Werror=format-security', '-Wno-redundant-decls', '-Wvla', '-Wno-format-truncation', '-Wimplicit-fallthrough', '-fno-math-errno', '-Wall', '-Wundef', '-Wmissing-prototypes', '-Wshadow', '-Wno-switch', '-Wparentheses', '-Wpointer-arith', '-Wno-pointer-sign', '-Wno-unused-result', '-D_WIN32_WINNT=0x0602', '-DUNICODE', '-DCOBJMACROS', '-DINITGUID', '-U__STRICT_ANSI__', '-D__USE_MINGW_ANSI_STDIO=1', '-DDEFAULT_DVD_DEVICE="D:"', '-DDEFAULT_CDROM_DEVICE="D:"', '-DHAVE_GPL=1', '-DHAVE_CPLAYER=1', '-DHAVE_BUILD_DATE=1', '-DHAVE_OPTIMIZE=1', '-DHAVE_DEBUG_BUILD=1', '-DHAVE_ASM=1', '-DHAVE_VECTOR=1', '-DHAVE_NOEXECSTACK=1', '-DHAVE_LIBM=1', '-DHAVE_MINGW=1', '../test.c', '-c', '-o/home/../lxqt/mpv/build/.conf_check_a34ef163abcd18bf3aa56d0f72118dbe/testbuild/test.c.1.o']
err: ../test.c:1:10: fatal error: TargetConditionals.h: File o directory non esistente
    1 | #include <TargetConditionals.h>
      |          ^~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

from /home/../lxqt/mpv: Test does not build: Traceback (most recent call last):
  File "/home/../lxqt/mpv/.waf3-2.0.24-c88b74123ce8b9d1a27999f7cf96dff0/waflib/Configure.py", line 335, in run_build
    bld.compile()
  File "/home/../lxqt/mpv/.waf3-2.0.24-c88b74123ce8b9d1a27999f7cf96dff0/waflib/Build.py", line 176, in compile
    raise Errors.BuildError(self.producer.error)
waflib.Errors.BuildError: Build failed
 -> task in 'testprog' failed with exit status 1 (run with -v to display more information)

from /home/../lxqt/mpv: The configuration failed
no
-------------------------------------------------------------------------
Checking for Android EGL support
android not found
-------------------------------------------------------------------------
Checking for development environment
yes
-------------------------------------------------------------------------
Checking for macOS Swift build tools
os-darwin not found
-------------------------------------------------------------------------
Checking for Universal Windows Platform
disabled
-------------------------------------------------------------------------
Checking for win32 desktop APIs
==>

int main(int argc, char **argv) {
	(void)argc; (void)argv;
	return 0;
}

<==
[1/2] Compiling [32mbuild/.conf_check_ae42ce3cb3a4e516733557cdd4b46cb8/test.c[0m

['/usr/bin/i686-w64-mingw32-gcc', '-D_ISOC99_SOURCE', '-D_GNU_SOURCE', '-D_FILE_OFFSET_BITS=64', '-Wall', '-std=c11', '-O2', '-g', '-Werror=implicit-function-declaration', '-Wno-error=deprecated-declarations', '-Wno-error=unused-function', '-Wempty-body', '-Wdisabled-optimization', '-Wstrict-prototypes', '-Wno-format-zero-length', '-Werror=format-security', '-Wno-redundant-decls', '-Wvla', '-Wno-format-truncation', '-Wimplicit-fallthrough', '-fno-math-errno', '-Wall', '-Wundef', '-Wmissing-prototypes', '-Wshadow', '-Wno-switch', '-Wparentheses', '-Wpointer-arith', '-Wno-pointer-sign', '-Wno-unused-result', '-D_WIN32_WINNT=0x0602', '-DUNICODE', '-DCOBJMACROS', '-DINITGUID', '-U__STRICT_ANSI__', '-D__USE_MINGW_ANSI_STDIO=1', '-DDEFAULT_DVD_DEVICE="D:"', '-DDEFAULT_CDROM_DEVICE="D:"', '-DHAVE_GPL=1', '-DHAVE_CPLAYER=1', '-DHAVE_BUILD_DATE=1', '-DHAVE_OPTIMIZE=1', '-DHAVE_DEBUG_BUILD=1', '-DHAVE_ASM=1', '-DHAVE_VECTOR=1', '-DHAVE_NOEXECSTACK=1', '-DHAVE_LIBM=1', '-DHAVE_MINGW=1', '-DHAVE_POSIX_OR_MINGW=1', '../test.c', '-c', '-o/home/../lxqt/mpv/build/.conf_check_ae42ce3cb3a4e516733557cdd4b46cb8/testbuild/test.c.1.o']
[2/2] Linking [33mbuild/.conf_check_ae42ce3cb3a4e516733557cdd4b46cb8/testbuild/testprog.exe[0m

['/usr/bin/i686-w64-mingw32-gcc', '-Wl,--enable-auto-import', 'test.c.1.o', '-o/home/../lxqt/mpv/build/.conf_check_ae42ce3cb3a4e516733557cdd4b46cb8/testbuild/testprog.exe', '-Wl,-Bstatic', '-Wl,-Bdynamic', '-lwinmm', '-lgdi32', '-lole32', '-luuid', '-lavrt', '-ldwmapi', '-lversion']
yes
-------------------------------------------------------------------------
Checking for internal pthread wrapper for win32 (Vista+)
yes
-------------------------------------------------------------------------
Checking for POSIX threads
yes
-------------------------------------------------------------------------
Checking for pthread runtime debugging wrappers
disabled
-------------------------------------------------------------------------
Checking for C11 stdatomic.h
==>
#include <stdatomic.h>
int main(int argc, char **argv)
{ atomic_int_least64_t test = ATOMIC_VAR_INIT(123);atomic_fetch_add(&test, 1); return 0; }
<==
[1/2] Compiling [32mbuild/.conf_check_f9a653c7c63ad880df5b3c4bac1a3167/test.c[0m

['/usr/bin/i686-w64-mingw32-gcc', '-D_ISOC99_SOURCE', '-D_GNU_SOURCE', '-D_FILE_OFFSET_BITS=64', '-Wall', '-std=c11', '-O2', '-g', '-Werror=implicit-function-declaration', '-Wno-error=deprecated-declarations', '-Wno-error=unused-function', '-Wempty-body', '-Wdisabled-optimization', '-Wstrict-prototypes', '-Wno-format-zero-length', '-Werror=format-security', '-Wno-redundant-decls', '-Wvla', '-Wno-format-truncation', '-Wimplicit-fallthrough', '-fno-math-errno', '-Wall', '-Wundef', '-Wmissing-prototypes', '-Wshadow', '-Wno-switch', '-Wparentheses', '-Wpointer-arith', '-Wno-pointer-sign', '-Wno-unused-result', '-D_WIN32_WINNT=0x0602', '-DUNICODE', '-DCOBJMACROS', '-DINITGUID', '-U__STRICT_ANSI__', '-D__USE_MINGW_ANSI_STDIO=1', '-isystem', '/home/../lxqt/mpv/osdep/win32/include', '-I', '/home/../lxqt/mpv/osdep/win32/include', '-DIN_WINPTHREAD', '-DDEFAULT_DVD_DEVICE="D:"', '-DDEFAULT_CDROM_DEVICE="D:"', '-DHAVE_GPL=1', '-DHAVE_CPLAYER=1', '-DHAVE_BUILD_DATE=1', '-DHAVE_OPTIMIZE=1', '-DHAVE_DEBUG_BUILD=1', '-DHAVE_ASM=1', '-DHAVE_VECTOR=1', '-DHAVE_NOEXECSTACK=1', '-DHAVE_LIBM=1', '-DHAVE_MINGW=1', '-DHAVE_POSIX_OR_MINGW=1', '-DHAVE_WIN32_DESKTOP=1', '-DHAVE_WIN32_INTERNAL_PTHREADS=1', '../test.c', '-c', '-o/home/../lxqt/mpv/build/.conf_check_f9a653c7c63ad880df5b3c4bac1a3167/testbuild/test.c.1.o']
[2/2] Linking [33mbuild/.conf_check_f9a653c7c63ad880df5b3c4bac1a3167/testbuild/testprog.exe[0m

['/usr/bin/i686-w64-mingw32-gcc', '-Wl,--enable-auto-import', 'test.c.1.o', '-o/home/../lxqt/mpv/build/.conf_check_f9a653c7c63ad880df5b3c4bac1a3167/testbuild/testprog.exe', '-Wl,-Bstatic', '-Wl,-Bdynamic']
yes
-------------------------------------------------------------------------
Checking for linking with -lrt
==>

int main(int argc, char **argv) {
	(void)argc; (void)argv;
	return 0;
}

<==
[1/2] Compiling [32mbuild/.conf_check_58e4e584ff2bfea83e48305e923d2cec/test.c[0m

['/usr/bin/i686-w64-mingw32-gcc', '-D_ISOC99_SOURCE', '-D_GNU_SOURCE', '-D_FILE_OFFSET_BITS=64', '-Wall', '-std=c11', '-O2', '-g', '-Werror=implicit-function-declaration', '-Wno-error=deprecated-declarations', '-Wno-error=unused-function', '-Wempty-body', '-Wdisabled-optimization', '-Wstrict-prototypes', '-Wno-format-zero-length', '-Werror=format-security', '-Wno-redundant-decls', '-Wvla', '-Wno-format-truncation', '-Wimplicit-fallthrough', '-fno-math-errno', '-Wall', '-Wundef', '-Wmissing-prototypes', '-Wshadow', '-Wno-switch', '-Wparentheses', '-Wpointer-arith', '-Wno-pointer-sign', '-Wno-unused-result', '-D_WIN32_WINNT=0x0602', '-DUNICODE', '-DCOBJMACROS', '-DINITGUID', '-U__STRICT_ANSI__', '-D__USE_MINGW_ANSI_STDIO=1', '-isystem', '/home/../lxqt/mpv/osdep/win32/include', '-I', '/home/../lxqt/mpv/osdep/win32/include', '-DIN_WINPTHREAD', '-DDEFAULT_DVD_DEVICE="D:"', '-DDEFAULT_CDROM_DEVICE="D:"', '-DHAVE_GPL=1', '-DHAVE_CPLAYER=1', '-DHAVE_BUILD_DATE=1', '-DHAVE_OPTIMIZE=1', '-DHAVE_DEBUG_BUILD=1', '-DHAVE_ASM=1', '-DHAVE_VECTOR=1', '-DHAVE_NOEXECSTACK=1', '-DHAVE_LIBM=1', '-DHAVE_MINGW=1', '-DHAVE_POSIX_OR_MINGW=1', '-DHAVE_WIN32_DESKTOP=1', '-DHAVE_WIN32_INTERNAL_PTHREADS=1', '-DHAVE_STDATOMIC=1', '../test.c', '-c', '-o/home/../lxqt/mpv/build/.conf_check_58e4e584ff2bfea83e48305e923d2cec/testbuild/test.c.1.o']
[2/2] Linking [33mbuild/.conf_check_58e4e584ff2bfea83e48305e923d2cec/testbuild/testprog.exe[0m

['/usr/bin/i686-w64-mingw32-gcc', '-Wl,--enable-auto-import', 'test.c.1.o', '-o/home/../lxqt/mpv/build/.conf_check_58e4e584ff2bfea83e48305e923d2cec/testbuild/testprog.exe', '-Wl,-Bstatic', '-Wl,-Bdynamic', '-lrt']
err: /usr/bin/i686-w64-mingw32-ld: impossibile trovare -lrt: File o directory non esistente
collect2: error: ld returned 1 exit status

from /home/../lxqt/mpv: Test does not build: Traceback (most recent call last):
  File "/home/../lxqt/mpv/.waf3-2.0.24-c88b74123ce8b9d1a27999f7cf96dff0/waflib/Configure.py", line 335, in run_build
    bld.compile()
  File "/home/../lxqt/mpv/.waf3-2.0.24-c88b74123ce8b9d1a27999f7cf96dff0/waflib/Build.py", line 176, in compile
    raise Errors.BuildError(self.producer.error)
waflib.Errors.BuildError: Build failed
 -> task in 'testprog' failed with exit status 1 (run with -v to display more information)

from /home/../lxqt/mpv: The configuration failed
no
-------------------------------------------------------------------------
Checking for iconv
==>
#include <stdio.h>
#include <unistd.h>
#include <iconv.h>
#define INBUFSIZE 1024
#define OUTBUFSIZE 4096

char inbuffer[INBUFSIZE];
char outbuffer[OUTBUFSIZE];

int main(void) {
  size_t numread;
  iconv_t icdsc;
  char *tocode="UTF-8";
  char *fromcode="cp1250";
  if ((icdsc = iconv_open(tocode, fromcode)) != (iconv_t)(-1)) {
    while ((numread = read(0, inbuffer, INBUFSIZE))) {
      char *iptr=inbuffer;
      char *optr=outbuffer;
      size_t inleft=numread;
      size_t outleft=OUTBUFSIZE;
      if (iconv(icdsc, &iptr, &inleft, &optr, &outleft)
          != (size_t)(-1)) {
        write(1, outbuffer, OUTBUFSIZE - outleft);
      }
    }
    if (iconv_close(icdsc) == -1)
      ;
  }
  return 0;
}

<==
[1/2] Compiling [32mbuild/.conf_check_d45a13fa7a23823640961b9af4bcd77f/test.c[0m

['/usr/bin/i686-w64-mingw32-gcc', '-D_ISOC99_SOURCE', '-D_GNU_SOURCE', '-D_FILE_OFFSET_BITS=64', '-Wall', '-std=c11', '-O2', '-g', '-Werror=implicit-function-declaration', '-Wno-error=deprecated-declarations', '-Wno-error=unused-function', '-Wempty-body', '-Wdisabled-optimization', '-Wstrict-prototypes', '-Wno-format-zero-length', '-Werror=format-security', '-Wno-redundant-decls', '-Wvla', '-Wno-format-truncation', '-Wimplicit-fallthrough', '-fno-math-errno', '-Wall', '-Wundef', '-Wmissing-prototypes', '-Wshadow', '-Wno-switch', '-Wparentheses', '-Wpointer-arith', '-Wno-pointer-sign', '-Wno-unused-result', '-D_WIN32_WINNT=0x0602', '-DUNICODE', '-DCOBJMACROS', '-DINITGUID', '-U__STRICT_ANSI__', '-D__USE_MINGW_ANSI_STDIO=1', '-isystem', '/home/../lxqt/mpv/osdep/win32/include', '-I', '/home/../lxqt/mpv/osdep/win32/include', '-DIN_WINPTHREAD', '-DDEFAULT_DVD_DEVICE="D:"', '-DDEFAULT_CDROM_DEVICE="D:"', '-DHAVE_GPL=1', '-DHAVE_CPLAYER=1', '-DHAVE_BUILD_DATE=1', '-DHAVE_OPTIMIZE=1', '-DHAVE_DEBUG_BUILD=1', '-DHAVE_ASM=1', '-DHAVE_VECTOR=1', '-DHAVE_NOEXECSTACK=1', '-DHAVE_LIBM=1', '-DHAVE_MINGW=1', '-DHAVE_POSIX_OR_MINGW=1', '-DHAVE_WIN32_DESKTOP=1', '-DHAVE_WIN32_INTERNAL_PTHREADS=1', '-DHAVE_STDATOMIC=1', '../test.c', '-c', '-o/home/../lxqt/mpv/build/.conf_check_d45a13fa7a23823640961b9af4bcd77f/testbuild/test.c.1.o']
err: ../test.c:3:10: fatal error: iconv.h: File o directory non esistente
    3 | #include <iconv.h>
      |          ^~~~~~~~~
compilation terminated.

from /home/../lxqt/mpv: Test does not build: Traceback (most recent call last):
  File "/home/../lxqt/mpv/.waf3-2.0.24-c88b74123ce8b9d1a27999f7cf96dff0/waflib/Configure.py", line 335, in run_build
    bld.compile()
  File "/home/../lxqt/mpv/.waf3-2.0.24-c88b74123ce8b9d1a27999f7cf96dff0/waflib/Build.py", line 176, in compile
    raise Errors.BuildError(self.producer.error)
waflib.Errors.BuildError: Build failed
 -> task in 'testprog' failed with exit status 1 (run with -v to display more information)

from /home/../lxqt/mpv: The configuration failed
==>
#include <stdio.h>
#include <unistd.h>
#include <iconv.h>
#define INBUFSIZE 1024
#define OUTBUFSIZE 4096

char inbuffer[INBUFSIZE];
char outbuffer[OUTBUFSIZE];

int main(void) {
  size_t numread;
  iconv_t icdsc;
  char *tocode="UTF-8";
  char *fromcode="cp1250";
  if ((icdsc = iconv_open(tocode, fromcode)) != (iconv_t)(-1)) {
    while ((numread = read(0, inbuffer, INBUFSIZE))) {
      char *iptr=inbuffer;
      char *optr=outbuffer;
      size_t inleft=numread;
      size_t outleft=OUTBUFSIZE;
      if (iconv(icdsc, &iptr, &inleft, &optr, &outleft)
          != (size_t)(-1)) {
        write(1, outbuffer, OUTBUFSIZE - outleft);
      }
    }
    if (iconv_close(icdsc) == -1)
      ;
  }
  return 0;
}

<==
[1/2] Compiling [32mbuild/.conf_check_9c5ba9344117225d9a000c0b43154f31/test.c[0m

['/usr/bin/i686-w64-mingw32-gcc', '-D_ISOC99_SOURCE', '-D_GNU_SOURCE', '-D_FILE_OFFSET_BITS=64', '-Wall', '-std=c11', '-O2', '-g', '-Werror=implicit-function-declaration', '-Wno-error=deprecated-declarations', '-Wno-error=unused-function', '-Wempty-body', '-Wdisabled-optimization', '-Wstrict-prototypes', '-Wno-format-zero-length', '-Werror=format-security', '-Wno-redundant-decls', '-Wvla', '-Wno-format-truncation', '-Wimplicit-fallthrough', '-fno-math-errno', '-Wall', '-Wundef', '-Wmissing-prototypes', '-Wshadow', '-Wno-switch', '-Wparentheses', '-Wpointer-arith', '-Wno-pointer-sign', '-Wno-unused-result', '-D_WIN32_WINNT=0x0602', '-DUNICODE', '-DCOBJMACROS', '-DINITGUID', '-U__STRICT_ANSI__', '-D__USE_MINGW_ANSI_STDIO=1', '-isystem', '/home/../lxqt/mpv/osdep/win32/include', '-I', '/home/../lxqt/mpv/osdep/win32/include', '-DIN_WINPTHREAD', '-DDEFAULT_DVD_DEVICE="D:"', '-DDEFAULT_CDROM_DEVICE="D:"', '-DHAVE_GPL=1', '-DHAVE_CPLAYER=1', '-DHAVE_BUILD_DATE=1', '-DHAVE_OPTIMIZE=1', '-DHAVE_DEBUG_BUILD=1', '-DHAVE_ASM=1', '-DHAVE_VECTOR=1', '-DHAVE_NOEXECSTACK=1', '-DHAVE_LIBM=1', '-DHAVE_MINGW=1', '-DHAVE_POSIX_OR_MINGW=1', '-DHAVE_WIN32_DESKTOP=1', '-DHAVE_WIN32_INTERNAL_PTHREADS=1', '-DHAVE_STDATOMIC=1', '../test.c', '-c', '-o/home/../lxqt/mpv/build/.conf_check_9c5ba9344117225d9a000c0b43154f31/testbuild/test.c.1.o']
err: ../test.c:3:10: fatal error: iconv.h: File o directory non esistente
    3 | #include <iconv.h>
      |          ^~~~~~~~~
compilation terminated.

from /home/../lxqt/mpv: Test does not build: Traceback (most recent call last):
  File "/home/../lxqt/mpv/.waf3-2.0.24-c88b74123ce8b9d1a27999f7cf96dff0/waflib/Configure.py", line 335, in run_build
    bld.compile()
  File "/home/../lxqt/mpv/.waf3-2.0.24-c88b74123ce8b9d1a27999f7cf96dff0/waflib/Build.py", line 176, in compile
    raise Errors.BuildError(self.producer.error)
waflib.Errors.BuildError: Build failed
 -> task in 'testprog' failed with exit status 1 (run with -v to display more information)

from /home/../lxqt/mpv: The configuration failed
==>
#include <stdio.h>
#include <unistd.h>
#include <iconv.h>
#define INBUFSIZE 1024
#define OUTBUFSIZE 4096

char inbuffer[INBUFSIZE];
char outbuffer[OUTBUFSIZE];

int main(void) {
  size_t numread;
  iconv_t icdsc;
  char *tocode="UTF-8";
  char *fromcode="cp1250";
  if ((icdsc = iconv_open(tocode, fromcode)) != (iconv_t)(-1)) {
    while ((numread = read(0, inbuffer, INBUFSIZE))) {
      char *iptr=inbuffer;
      char *optr=outbuffer;
      size_t inleft=numread;
      size_t outleft=OUTBUFSIZE;
      if (iconv(icdsc, &iptr, &inleft, &optr, &outleft)
          != (size_t)(-1)) {
        write(1, outbuffer, OUTBUFSIZE - outleft);
      }
    }
    if (iconv_close(icdsc) == -1)
      ;
  }
  return 0;
}

<==
[1/2] Compiling [32mbuild/.conf_check_9c5ba9344117225d9a000c0b43154f31/test.c[0m

['/usr/bin/i686-w64-mingw32-gcc', '-D_ISOC99_SOURCE', '-D_GNU_SOURCE', '-D_FILE_OFFSET_BITS=64', '-Wall', '-std=c11', '-O2', '-g', '-Werror=implicit-function-declaration', '-Wno-error=deprecated-declarations', '-Wno-error=unused-function', '-Wempty-body', '-Wdisabled-optimization', '-Wstrict-prototypes', '-Wno-format-zero-length', '-Werror=format-security', '-Wno-redundant-decls', '-Wvla', '-Wno-format-truncation', '-Wimplicit-fallthrough', '-fno-math-errno', '-Wall', '-Wundef', '-Wmissing-prototypes', '-Wshadow', '-Wno-switch', '-Wparentheses', '-Wpointer-arith', '-Wno-pointer-sign', '-Wno-unused-result', '-D_WIN32_WINNT=0x0602', '-DUNICODE', '-DCOBJMACROS', '-DINITGUID', '-U__STRICT_ANSI__', '-D__USE_MINGW_ANSI_STDIO=1', '-isystem', '/home/../lxqt/mpv/osdep/win32/include', '-I', '/home/../lxqt/mpv/osdep/win32/include', '-DIN_WINPTHREAD', '-DDEFAULT_DVD_DEVICE="D:"', '-DDEFAULT_CDROM_DEVICE="D:"', '-DHAVE_GPL=1', '-DHAVE_CPLAYER=1', '-DHAVE_BUILD_DATE=1', '-DHAVE_OPTIMIZE=1', '-DHAVE_DEBUG_BUILD=1', '-DHAVE_ASM=1', '-DHAVE_VECTOR=1', '-DHAVE_NOEXECSTACK=1', '-DHAVE_LIBM=1', '-DHAVE_MINGW=1', '-DHAVE_POSIX_OR_MINGW=1', '-DHAVE_WIN32_DESKTOP=1', '-DHAVE_WIN32_INTERNAL_PTHREADS=1', '-DHAVE_STDATOMIC=1', '../test.c', '-c', '-o/home/../lxqt/mpv/build/.conf_check_9c5ba9344117225d9a000c0b43154f31/testbuild/test.c.1.o']
err: ../test.c:3:10: fatal error: iconv.h: File o directory non esistente
    3 | #include <iconv.h>
      |          ^~~~~~~~~
compilation terminated.

from /home/../lxqt/mpv: Test does not build: Traceback (most recent call last):
  File "/home/../lxqt/mpv/.waf3-2.0.24-c88b74123ce8b9d1a27999f7cf96dff0/waflib/Configure.py", line 335, in run_build
    bld.compile()
  File "/home/../lxqt/mpv/.waf3-2.0.24-c88b74123ce8b9d1a27999f7cf96dff0/waflib/Build.py", line 176, in compile
    raise Errors.BuildError(self.producer.error)
waflib.Errors.BuildError: Build failed
 -> task in 'testprog' failed with exit status 1 (run with -v to display more information)

from /home/../lxqt/mpv: The configuration failed
no
Ci sono degli errori minori e errori fatali. Non posto qui tutto il log.


Ciao
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2854
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
Sesso: Maschile
Località: Roma, Italia

Re: Cross Compilazione Mpv

Messaggio da DoctorStrange »

Nella directory di sistema /usr/bin non si dovrebbero creare l8nk, ma installare nuovi puntamenti, usando "update-alternatives --install" e, subito dopo, "update-alternatives --set".

Già che ci sei, controlla anche che ci siano i puntamenti a Python, gcc, g++ o tutto ciò che ti serva.
RTK901
Prode Principiante
Messaggi: 86
Iscrizione: sabato 17 settembre 2022, 12:23
Desktop: Lxqt
Distribuzione: Lubuntu18.10
Sesso: Maschile

Re: Cross Compilazione Mpv

Messaggio da RTK901 »

Ti ringrazio, controllo anche questo, allego per intero anche il file di log.

Ciao
Allegati
config.txt
Mpv log
(67.84 KiB) Scaricato 25 volte
RTK901
Prode Principiante
Messaggi: 86
Iscrizione: sabato 17 settembre 2022, 12:23
Desktop: Lxqt
Distribuzione: Lubuntu18.10
Sesso: Maschile

Re: Cross Compilazione Mpv

Messaggio da RTK901 »

La configurazione non pare totalmente errata, ci sono molti yes e alcuni no per quello
che riguarda mac_os android_tv, ecc.
Dal file di log viene indicato che manca il file.h iconv.h ma questo file si trova in /usr/include
quindi come fare per indicargli dove trovarlo al compilatore?

Scusami ma se mancano i collegamenti ai vari gcc, g++ ed altri, perche non viene fatto a monte
questo lavoro dagli sviluppatori di mpv?

Ciao
RTK901
Prode Principiante
Messaggi: 86
Iscrizione: sabato 17 settembre 2022, 12:23
Desktop: Lxqt
Distribuzione: Lubuntu18.10
Sesso: Maschile

Re: Cross Compilazione Mpv

Messaggio da RTK901 »

Ho provato anche con una Voidlinux ma ha fatto gli stessi errori che si sono verificati
con Devuan Chimaera oppure era una Bullseye, non ricordo adesso, una delle due insomma! :D

Ciao
RTK901
Prode Principiante
Messaggi: 86
Iscrizione: sabato 17 settembre 2022, 12:23
Desktop: Lxqt
Distribuzione: Lubuntu18.10
Sesso: Maschile

Re: Cross Compilazione Mpv

Messaggio da RTK901 »

Salve a tutti, riprendo questo 3ead dopo qualche giorno, mi sapete spiegare perche ci sono
dei link simbolici in /usr/bin che puntano a /etc/alternatives dove ci sono altri link simbolici
che tornato a puntare ad un eseguibile e/o libreria in /usr/bin e tutti e due puntano ad uno stesso
eseguibile in /usr/bin.
Che "giro" strano e questo?

Qualcuno mi ha detto che non e corretto fare dei symlink in /usr/bin poi mi trovo questo tipo
di link in /usr/bin.

Grazie a tutti :) e Buon Natale!

Ciao
Avatar utente
Clover
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 298
Iscrizione: giovedì 30 agosto 2012, 14:04
Desktop: KDE
Distribuzione: Kubuntu x86_64

Re: Cross Compilazione Mpv

Messaggio da Clover »

Quando è possibile assegnare un specifico comando a diversi binari perché installate diverse versioni, si usa una funzione detta "Debian Alternatives System" per determinare quale sarà quello di default che il sistema andrà ad usare, queste informazioni stanno in /etc/alternatives che crea collegamenti simbolici al file binario finale... altri sistemi sfruttano questo meccanismo come ad esempio apache.

Per quanto riguarda i collegamenti simbolici in /usr/bin che vanno a puntare binari che stanno altrove, effettivamente non andrebbe fatto, ma per questioni di comparabilità con altri sistemi *nix e per pigrizia di sviluppatori e manutentori viene fatto ugualmente; non è un vero e proprio errore, ma una violazione di regole di best practice.
RTK901
Prode Principiante
Messaggi: 86
Iscrizione: sabato 17 settembre 2022, 12:23
Desktop: Lxqt
Distribuzione: Lubuntu18.10
Sesso: Maschile

Re: Cross Compilazione Mpv

Messaggio da RTK901 »

Ok ti ringrazio, ho trovato g alternative, mi pare che chieda di puntare da un eseguibile A
ad un eseguibile B, ma non lavora partendo da symlink ad un programma B o una libreria.


Ciao :birra:
RTK901
Prode Principiante
Messaggi: 86
Iscrizione: sabato 17 settembre 2022, 12:23
Desktop: Lxqt
Distribuzione: Lubuntu18.10
Sesso: Maschile

Re: Cross Compilazione Mpv

Messaggio da RTK901 »

Ho riprovato con Meson e Bookworm ma anche con questa volta compaiono degli errori
per libavcodec, non trova lultima versione con il meotodo pkg-config che dice che non c'è,
cmake dice non presente ma anche questo e installato.

Ho provato varie volte con questo cross-file:

Codice: Seleziona tutto

[binaries]
c = '/usr/bin/i686-w64-mingw32-gcc'
cpp = '/usr/bin/i686-w64-mingw32-g++-win32'
objc = '/usr/bin/i686-w64-mingw32-gcc'
ar = '/usr/bin/i686-w64-mingw32-ar'
strip = '/usr/bin/i686-w64-mingw32-strip'
# pkgconfig = '/usr/bin/i686-w64-mingw32-pkg-config'
# pkgconfig = '/usr/bin/i686-pc-linux-gnu-pkg-config'
# pkgconfig = '/usr/bin/i686-linux-gnu-pkg-config'
pkgconfig = '/usr/bin/i686-w64-mingw32-pkg-config'
windres = '/usr/bin/i686-w64-mingw32-windres'
[host_machine]
system = 'windows'
cpu_family = 'x86'
cpu = 'i686'
endian = 'little'
Saluti

Codice: Seleziona tutto

Build started at 2023-01-02T10:10:49.915684
Main binary: /usr/bin/python3
Build Options: --cross-file=/home/.../mpv.txt
Python system: Linux
The Meson build system
Version: 1.0.0
Source dir: /home/.../mpv/mpv
Build dir: /home/.../mpv/mpv/buld
Build type: cross build
Project name: mpv
Project version: 0.35.0-UNKNOWN
-----
Detecting compiler via: /usr/bin/i686-w64-mingw32-gcc --version
compiler returned <Popen: returncode: 0 args: ['/usr/bin/i686-w64-mingw32-gcc', '--version']>
compiler stdout:
i686-w64-mingw32-gcc (GCC) 12 20220819
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
compiler stderr:

Running command: /usr/bin/i686-w64-mingw32-gcc -E -dM -
-----
Detecting linker via: /usr/bin/i686-w64-mingw32-gcc -Wl,--version
linker returned <Popen: returncode: 0 args: ['/usr/bin/i686-w64-mingw32-gcc', '-Wl,--version']>
linker stdout:
ld di GNU (GNU Binutils) 2.38.90.20220713
Copyright (C) 2022 Free Software Foundation, Inc.
Questo programma è software libero; siete liberi di ridistribuirlo secondo i termini
della GNU General Public License versione 3 o (a scelta) una versione più recente.
Questo programma non ha assolutamente alcuna garanzia.

linker stderr:
collect2 version 12 20220819
/usr/bin/i686-w64-mingw32-ld -plugin /usr/lib/gcc/i686-w64-mingw32/12/liblto_plugin.so -plugin-opt=/usr/lib/gcc/i686-w64-mingw32/12/lto-wrapper -plugin-opt=-fresolution=/tmp/ccV5MSkg.res -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_eh -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt -plugin-opt=-pass-through=-lkernel32 -plugin-opt=-pass-through=-ladvapi32 -plugin-opt=-pass-through=-lshell32 -plugin-opt=-pass-through=-luser32 -plugin-opt=-pass-through=-lkernel32 -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_eh -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt -plugin-opt=-pass-through=-lkernel32 -m i386pe -Bdynamic /usr/lib/gcc/i686-w64-mingw32/12/../../../../i686-w64-mingw32/lib/../lib/crt2.o /usr/lib/gcc/i686-w64-mingw32/12/crtbegin.o -L/usr/lib/gcc/i686-w64-mingw32/12 -L/usr/lib/gcc/i686-w64-mingw32/12/../../../../i686-w64-mingw32/lib/../lib -L/usr/lib/gcc/i686-w64-mingw32/12/../../../../i686-w64-mingw32/lib --version -lmingw32 -lgcc -lgcc_eh -lmoldname -lmingwex -lmsvcrt -lkernel32 -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc -lgcc_eh -lmoldname -lmingwex -lmsvcrt -lkernel32 /usr/lib/gcc/i686-w64-mingw32/12/crtend.o

Sanity testing C compiler: /usr/bin/i686-w64-mingw32-gcc
Is cross compiler: True.
Sanity check compiler command line: /usr/bin/i686-w64-mingw32-gcc sanitycheckc.c -o sanitycheckc_cross.exe -D_FILE_OFFSET_BITS=64 -c
Sanity check compile stdout:

-----
Sanity check compile stderr:

-----
C compiler for the host machine: /usr/bin/i686-w64-mingw32-gcc (gcc 12.0.0 "i686-w64-mingw32-gcc (GCC) 12 20220819")
C linker for the host machine: /usr/bin/i686-w64-mingw32-gcc ld.bfd 2.38.90.20220713
detecting CPU family based on trial='i686'
-----
Detecting compiler via: cc --version
compiler returned <Popen: returncode: 0 args: ['cc', '--version']>
compiler stdout:
cc (Debian 12.2.0-11) 12.2.0
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

compiler stderr:

Running command: cc -E -dM -
-----
Detecting linker via: cc -Wl,--version
linker returned <Popen: returncode: 0 args: ['cc', '-Wl,--version']>
linker stdout:
ld di GNU (GNU Binutils for Debian) 2.39.50.20221224
Copyright (C) 2022 Free Software Foundation, Inc.
Questo programma è software libero; siete liberi di ridistribuirlo secondo i termini
della GNU General Public License versione 3 o (a scelta) una versione più recente.
Questo programma non ha assolutamente alcuna garanzia.

linker stderr:
collect2 version 12.2.0
/usr/bin/ld -plugin /usr/lib/gcc/i686-linux-gnu/12/liblto_plugin.so -plugin-opt=/usr/lib/gcc/i686-linux-gnu/12/lto-wrapper -plugin-opt=-fresolution=/tmp/ccVSDRuS.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_i386 --hash-style=gnu --as-needed -dynamic-linker /lib/ld-linux.so.2 -pie /usr/lib/gcc/i686-linux-gnu/12/../../../i386-linux-gnu/Scrt1.o /usr/lib/gcc/i686-linux-gnu/12/../../../i386-linux-gnu/crti.o /usr/lib/gcc/i686-linux-gnu/12/crtbeginS.o -L/usr/lib/gcc/i686-linux-gnu/12 -L/usr/lib/gcc/i686-linux-gnu/12/../../../i386-linux-gnu -L/usr/lib/gcc/i686-linux-gnu/12/../../../../lib -L/lib/i386-linux-gnu -L/lib/../lib -L/usr/lib/i386-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/i686-linux-gnu/12/../../.. --version -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/i686-linux-gnu/12/crtendS.o /usr/lib/gcc/i686-linux-gnu/12/../../../i386-linux-gnu/crtn.o

Sanity testing C compiler: cc
Is cross compiler: False.
Sanity check compiler command line: cc sanitycheckc.c -o sanitycheckc.exe -D_FILE_OFFSET_BITS=64
Sanity check compile stdout:

-----
Sanity check compile stderr:

-----
Running test binary command:  /home/.../mpv/mpv/buld/meson-private/sanitycheckc.exe
C compiler for the build machine: cc (gcc 12.2.0 "cc (Debian 12.2.0-11) 12.2.0")
C linker for the build machine: cc ld.bfd 2.39.50.20221224
detecting CPU family based on trial='i686'
detecting CPU family based on trial='i686'
Build machine cpu family: x86
Build machine cpu: i686
Host machine cpu family: x86
Host machine cpu: i686
Target machine cpu family: x86
Target machine cpu: i686
Program python3 found: YES (/usr/bin/python3)
Pkg-config binary for 1 is not cached.
Pkg-config binary for 1 specified from cross file, native file, or env var as ['/usr/bin/i686-w64-mingw32-pkg-config']
WARNING: We thought we found pkg-config '/usr/bin/i686-w64-mingw32-pkg-config' but now it's not there. How odd!
Found Pkg-config: NO
Dependency lookup for libavcodec with method 'pkgconfig' failed: Pkg-config binary for machine 1 not found. Giving up.
CMake binary for 1 is not cached
CMake binary missing from cross or native file, or env var undefined.
Default target is not allowed for cross use
Found CMake: NO
Dependency lookup for libavcodec with method 'cmake' failed: CMake binary for machine 1 not found. Giving up.
Run-time dependency libavcodec found: NO 

mpv/mpv/meson.build:19:0: ERROR: Dependency lookup for libavcodec with method 'pkgconfig' failed: Pkg-config binary for machine 1 not found. Giving up.


RTK901
Prode Principiante
Messaggi: 86
Iscrizione: sabato 17 settembre 2022, 12:23
Desktop: Lxqt
Distribuzione: Lubuntu18.10
Sesso: Maschile

Re: Cross Compilazione Mpv

Messaggio da RTK901 »

Sono tornato su questo problema, ho rifatto tutto da capo con Mxe ma i problemi sono quelli visti più sopra.
Con Mxe per compilare mpv manca un file iconv.h che e presente in /usr/include ma non lo "vede" oppure va a controllare
da qualche altra parte, ho letto nei log che c'è una cartella in /.../mpv/osdep/win32/include e li ho copiato sia inconv.h che
dlfcn.h ma non e servito a nulla, non li vede/legge, nel log indica di mettere --disable-iconv ma dove va messo?
Non si capisce, proverò sulla linea di comando.

Ciao
RTK901
Prode Principiante
Messaggi: 86
Iscrizione: sabato 17 settembre 2022, 12:23
Desktop: Lxqt
Distribuzione: Lubuntu18.10
Sesso: Maschile

Re: Cross Compilazione Mpv

Messaggio da RTK901 »

Ho riprovato a compilare con questi comandi:

Codice: Seleziona tutto

python3 ./bootstrap.py , DEST_OS=win32 TARGET=i686-w64-mingw32  ./waf 
configure --disable-iconv
appare dopo poco un messaggio:
unable find development files for libass , or the version found is too old.
libass >= 0.12.2
Ho installato questa versione penso sia l'ultima.

Codice: Seleziona tutto

https://packages.debian.org/bookworm/libass-dev
ma appare sempre lo stesso messaggio di errore:

Codice: Seleziona tutto

"unable find development files for libass , or the version found is too old."
Ciao
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 13 ospiti