fordítás

Programozás, programnyelvek, kiegészítők, alkalmazások, programnyelvek, programfejlesztéssel kapcsolatos témák, közvetlenül a programozással összefüggő kérdések

ticoo1
Hozzászólások: 625
Csatlakozott: 2014.10.21. 08:58

Re: fordítás

Hozzászólás Szerző: ticoo1 »

Köszönöm!

Nos, tanulunk tovább. :mrgreen:

Avatar
nocsak
Hozzászólások: 408
Csatlakozott: 2014.09.29. 15:01
Kapcsolat:

Re: fordítás

Hozzászólás Szerző: nocsak »

Szívesen mindenkinek!

Viszont a new2dir szkript valamiért nem másolta át a szimbolikus linkeket a dir2pet-hez tartozó mappába, így a videóban készült pet is patch-el működne...
Ez azt jelenti a gyakorlatban, hogy ahogy az LX7 SP1-ben cseréltem, úgy itt is cserélni kell az előbb említett 2 szkriptet a bionic-ban is. Úgyhogy újrafordítom az ffmpeg-et majd. Meg ha jól rémlik a konfigurálásnál kifelejtettem az X11grab -hez tartozó kapcsolót. Viszont amennyiben sikerrel járok az új pettel, azt fogom tenni a jelenlegiek helyére.

majd ezt a hsz-emet szerkesztve beillesztem az új konfig sort később.

Frissítve!

Na újrafordítottam az ffmpeget és meg van mi a hiba... az install folyamatban van egy utasítás ami a rendszerbe hozza létre a szimbolikus linkeket. Na most ezt nem értelmezi a new2dir, ez nem feltétlen a szkript hiányossága, hiszen az csak másol... szóval nem az a probléma, hogy nem másolja át a szimbolikus linkeket, hanem parancs hozza létre a rendszerbe az install folyamán. Szóval a sourceforge -on levő patch pótolja őket. Így minden a helyén van. Tesztelést, visszajelzést örömmel fogadok - fogadunk!

A konfig továbbra is jó, ha nem akarunk sdl2-t az ffmpeghez, akkor az utolsó kapcsolót hagyjuk el:

Kód: Egész kijelölése

./configure --prefix=/usr --enable-shared --enable-gpl --enable-nonfree --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libdc1394 --enable-libfreetype --enable-libmp3lame --enable-libspeex --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-zlib --enable-postproc --disable-debug --enable-bzlib --enable-version3 --enable-libtheora --enable-swscale --enable-libcdio --enable-libxvid --disable-libcaca --enable-fontconfig --enable-opengl --enable-openssl --enable-ffplay --enable-sdl2

Avatar
nocsak
Hozzászólások: 408
Csatlakozott: 2014.09.29. 15:01
Kapcsolat:

Re: fordítás

Hozzászólás Szerző: nocsak »

ticoo1 kolléga kérésére fordítottam AbiWord 3.0.4 -et.
Ha most le kéne írnom hogyan kell fordítani - hát ...

Avatar
nocsak
Hozzászólások: 408
Csatlakozott: 2014.09.29. 15:01
Kapcsolat:

Re: fordítás

Hozzászólás Szerző: nocsak »

No, hát ez a nap is eljött...

Ha erről most videót kéne készítenem, valószínű kifüstölném a gépet a helyéből, úgyhogy egyelőre marad a beharangozó. De hol is kezdjem?

A köszönömökkel:

Köszönöm ticoo1-nek, hogy segít és kitartóan munkálkodik csiszol, fúr-farag a rendszereken, köszönöm willy36-nak is, hogy vállalja a teszteléseket és ha kell ő is javaslatokat tesz, köszönöm Skaminak is, hogy bátorít - róla példát véve sose adjam fel, ne zuhanjak össze és haladjak előre. Köszönöm KuLuSznak aki nélkül már kb a 13. próbálkozásnál járnék hiába és köszönöm az angol irc csatornán segítőknek, hogy közbenjárásukkal végül megalkothattam a stabil 5.7.7 -es jelen pillanatban 32bit pae kernelt a NOSpup-hoz. És végül de nem utolsó sorban mindenkinek köszönöm, akik bármely módon hozzájárulnak ahhoz, hogy a puppy használhatóbb legyen ahogy felette is jár - kel az idő és őrli annak vasfoga. Nagyon hosszú utat jártunk be mindannyian fejlesztők és felhasználók egyaránt. Vannak és még biztos lesznek is hullámvölgyek de a sikerekről is érdemes nyilatkozni mint most ez a kernel fordítás. Ahogy annyiszor mondtam már: sosem a fordítás a legnehezebb ebben, hanem a konfigurálás - az előkészületek de kétség nem fér hozzá, hogy a legizzasztóbb az amikor merev tekintettel figyeljük egy-egy fordítás alkalmával a futó terminált. Később szolgálok részletekkel és feltöltöm majd a kernelt a sourceforge-ra annak további vonatkozásaival. Addig is íme:
kernel_577.jpg
kernel_577.jpg (206.67 KiB) Megtekintve 4182 alkalommal

Kezdeti nehézségek:
577_menuconfig.jpg
577_menuconfig.jpg (66.88 KiB) Megtekintve 4179 alkalommal

Videó:
https://youtu.be/vBzlCbmvInc

Avatar
nocsak
Hozzászólások: 408
Csatlakozott: 2014.09.29. 15:01
Kapcsolat:

Re: fordítás

Hozzászólás Szerző: nocsak »

Üdv!

Nem kimondott fordítás a téma, inkább a C nyelv elsajátításának megpróbálása... (gondoltam miért ne kezdhetném a mélyvízzel...) na persze Skami és a többiek nélkül nem mentem volna ismét semmire.

Na de lássuk:

teszt.c

Kód: Egész kijelölése

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>

#define MAXC 1024       /* if you need a constant, #define one (or more) */
#define NPTRS   2       /* initial no. of pointers to allocate (lines) */

int main (int argc, char **argv) {
    


int found = 0;
char *p = strrchr(argv[1], '.');
if (p){
        char buf[MAXC],                 /* fixed buffer to read each line */
        **lines = NULL;             /* pointer to pointer to hold collection of lines */
    size_t  nptrs = NPTRS,          /* number of pointers available */
            used = 0;               /* number of pointers used */
    /* use filename provided as 1st argument (stdin by default) */
    FILE *fp = argc > 1 ? fopen ("kacsa.txt", "r") : stdin;
    
    if (!fp) {  /* validate file open for reading */
		printf("%s\n", "kacsa.txt needed next to this binary: 1st line: PATH program, 2nd line: FULLPATH program!");
        perror ("file open failed");
        return 1;
    }
    
    /* allocate/validate block holding initial nptrs pointers */
    if ((lines = malloc (nptrs * sizeof *lines)) == NULL) {
        perror ("malloc-lines");
        exit (EXIT_FAILURE);
    }
    
    while (fgets (buf, MAXC, fp)) {                 /* read each line into buf */
        size_t len;
        buf[(len = strcspn (buf, "\n"))] = 0;       /* trim \n, save length */
        
        if (used == nptrs) {    /* check if realloc of lines needed */
            /* always realloc using temporary pointer (doubling no. of pointers) */
            void *tmp = realloc (lines, (2 * nptrs) * sizeof *lines);
            if (!tmp) {                             /* validate reallocation */
                perror ("realloc-lines");
                break;                              /* don't exit, lines still good */
            }
            lines = tmp;                            /* assign reallocated block to lines */
            nptrs *= 2;                             /* update no. of pointers allocatd */
            /* (optionally) zero all newly allocated memory here */
        }
        
        /* allocate/validate storage for line */
        if (!(lines[used] = malloc (len + 1))) {
            perror ("malloc-lines[used]");
            break;
        }
        memcpy (lines[used], buf, len + 1);         /* copy line from buf to lines[used] */
        
        used += 1;                                  /* increment used pointer count */
    }
    /* (optionally) realloc to 'used' pointers to size no. of pointers exactly here */
    
    if (fp != stdin)   /* close file if not stdin */
        fclose (fp);

    /* use lines as needed (simply outputting here) */
    
	/*
	for (size_t i = 0; i < used; i++) {
        printf ("line[%3zu] : %s\n", i, lines[i]);
		
		
		
        free (lines[i]);                            
    }
    */
	
	

//printf("%d\n",found);

if(strcmp(p, ".m3u") == 0 || strcmp(p, ".m3u8") == 0 || strcmp(p, ".xspf") == 0){
	
	found = 1;
	printf("%d\n",found);
} else {
	
	found = 0;
	printf("%d\n",found);
}


if(found == 1){
	
//printf("%s\n", lines[0]);
  char *programName = lines[0];
  char *arg1 = "";
  
   execlp(programName, programName, argv[1], NULL);
	
	
} else {

	  char *binaryPath = lines[1];
  char *arg1i = "";
  
 
  execl(binaryPath, binaryPath, argv[1], NULL);

}

    free (lines);       /* free pointers when done */

}

	


    return 0;
}

Kód: Egész kijelölése

gcc teszt.c -o teszt
Kép (itt cukix):
cukix.jpg
cukix.jpg (17.02 KiB) Megtekintve 3057 alkalommal
kacsa.jpg
kacsa.jpg (28.81 KiB) Megtekintve 3055 alkalommal
Mi értelme?

kell egy kacsa.txt aminek első 2 sorába megadjuk a lejátszókat. De bármire átírható itt most kacsa.txt. Az első sor a $PATH eléréssel megadott simán fofi8 mondjuk, a második sor meg a teljes útvonallal lehet pl.: /usr/bin/ffplay vagy ./valami.sh

szintaxisra figyeljünk!

Az első sor lejátszója az m3u és m3u8 valamint xspf fájlokat kapja inputra.
A 2. sor a minden más egyebet kapja inputnak.


Ez arra jó, hogyha pl ezt a teszt binárist a txt-jével berakjuk a /root/-ba puppyn, akkor azt meg hozzáadhatjuk a default applications chooser -be audio lejátszónak /root/teszt. és akkor azzal ha mp4-re kattintunk ffplay vagy vlc a kép alapján, ha playlistre akkor fofi8. Persze fofi8 -nak kell lennie a /root/my-applications/bin -ben vagy valamelyik $PATH útvonalban.


A következő bináris a gtk-t használja 2 gombot jelenít meg az eljárás azonos, csak gombhoz rendelve és csak megnyitja a benne foglalt fofi8 illetve s4fofi8p_v1_beta.sh -t.

íme:

cukor.c

Kód: Egész kijelölése

#include <gtk/gtk.h>
#include <stdlib.h>
#include <unistd.h>

static int counter = 0;

void greet(GtkWidget* widget, gpointer data)
{
	// printf equivalent in GTK+
	g_print("Welcome to GTK\n");
	g_print("%s clicked %d times\n",
			(char*)data, ++counter);
			//int status = system("./fofi8");

  char *programName = "fofi8";
  char *arg1 = "";
  char *arg2 = "";
 
  execlp(programName, programName, arg1, arg2, NULL);

}


void greeti(GtkWidget* widget, gpointer data)
{
	// printf equivalent in GTK+
	g_print("Welcome to GTKi\n");
	g_print("%s clicked %d times\n",
			(char*)data, ++counter);
			//int status = system("./fofi8");



  char *binaryPath = "./s4fofi8p_v1_beta.sh";
  char *arg1i = "";
  char *arg2i = "";
 
  execl(binaryPath, binaryPath, arg1i, arg2i, NULL);
}




/*
 
 to compile:
 gcc cukor.c -o cukorc `pkg-config --cflags --libs gtk+-2.0`
 
 */
void destroy(GtkWidget* widget, gpointer data)
{
	gtk_main_quit();
}

int main(int argc, char* argv[])
{

	GtkWidget* window;
	GtkWidget* vbox;
	GtkWidget* button;
	GtkWidget* buttoni;
	gtk_init(&argc, &argv);

	
	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
	gtk_window_set_default_size(GTK_WINDOW(window), 230, 250);
	gtk_window_set_title(GTK_WINDOW(window), "cukorka");
	gtk_container_set_border_width(GTK_CONTAINER(window), 5);
	g_signal_connect(window, "destroy",
					G_CALLBACK(destroy), NULL);
	/* Let's set the border width of the window to 20.
	* You may play with the value and see the
	* difference. */
	
	
	
	
	vbox = gtk_vbox_new(TRUE, 1);
	gtk_container_add(GTK_CONTAINER(window), vbox);

	button = gtk_button_new_with_label("fofi8");
	buttoni = gtk_button_new_with_label("s4fofi8p_v1_beta.sh");
	g_signal_connect(GTK_OBJECT(button),
					"clicked", G_CALLBACK(greet),
					"button");
	g_signal_connect(GTK_OBJECT(buttoni),
					"clicked", G_CALLBACK(greeti),
					"buttoni");
					
	gtk_box_pack_start(GTK_BOX(vbox), button, TRUE, TRUE, 0);
	gtk_box_pack_start(GTK_BOX(vbox), buttoni, TRUE, TRUE, 0);
					
					
					
	
	gtk_widget_show_all(window);

	gtk_main();
	
	return 0;
}

fordításhoz:

Kód: Egész kijelölése

gcc cukor.c -o cukorc `pkg-config --cflags --libs gtk+-2.0`


Ennek meg az volt az értelme, hogy kipróbáljak egy GTK megjelenést, C -vel.


Kép:
cukorc.jpg
cukorc.jpg (8.23 KiB) Megtekintve 3057 alkalommal

Avatar
nocsak
Hozzászólások: 408
Csatlakozott: 2014.09.29. 15:01
Kapcsolat:

Re: fordítás

Hozzászólás Szerző: nocsak »

Üdv!

Kicsit okoskodtam a C forrásán a kacsa.txt -s binárisnak, az volt a célom, hogy bárhol van a bináris és bárhonnan hívom meg, a mindig mellette lévő kacsa.txt-t lássa!

Ennek okán a C forrása a következőre módosult:


teszt.c

Kód: Egész kijelölése

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <limits.h>
#include <libgen.h>

#define MAXC 1024       /* if you need a constant, #define one (or more) */
#define NPTRS   2       /* initial no. of pointers to allocate (lines) */

int main (int argc, char **argv) {
    


/*
char *symlinkpath = "kacsa.txt";
char actualpath [PATH_MAX+1];
char *ptr;


ptr = realpath(symlinkpath, actualpath);

*/
  char datadir[PATH_MAX];
  strncpy(datadir, argv[0], sizeof(datadir));
  dirname(datadir);
  strncat(datadir, "/kacsa.txt", sizeof(datadir));
  
int found = 0;
char *p = strrchr(argv[1], '.');
if (p){
	
        char buf[MAXC],                 /* fixed buffer to read each line */
        **lines = NULL;             /* pointer to pointer to hold collection of lines */
    size_t  nptrs = NPTRS,          /* number of pointers available */
            used = 0;               /* number of pointers used */
    /* use filename provided as 1st argument (stdin by default) */
    FILE *fp = argc > 1 ? fopen (datadir, "r") : stdin;
    
    if (!fp) {  /* validate file open for reading */
		printf("%s\n", "kacsa.txt needed next to this binary: 1st line: PATH program, 2nd line: FULLPATH program!");
        perror ("file open failed");
        return 1;
    }
    
    /* allocate/validate block holding initial nptrs pointers */
    if ((lines = malloc (nptrs * sizeof *lines)) == NULL) {
        perror ("malloc-lines");
        exit (EXIT_FAILURE);
    }
    
    while (fgets (buf, MAXC, fp)) {                 /* read each line into buf */
        size_t len;
        buf[(len = strcspn (buf, "\n"))] = 0;       /* trim \n, save length */
        
        if (used == nptrs) {    /* check if realloc of lines needed */
            /* always realloc using temporary pointer (doubling no. of pointers) */
            void *tmp = realloc (lines, (2 * nptrs) * sizeof *lines);
            if (!tmp) {                             /* validate reallocation */
                perror ("realloc-lines");
                break;                              /* don't exit, lines still good */
            }
            lines = tmp;                            /* assign reallocated block to lines */
            nptrs *= 2;                             /* update no. of pointers allocatd */
            /* (optionally) zero all newly allocated memory here */
        }
        
        /* allocate/validate storage for line */
        if (!(lines[used] = malloc (len + 1))) {
            perror ("malloc-lines[used]");
            break;
        }
        memcpy (lines[used], buf, len + 1);         /* copy line from buf to lines[used] */
        
        used += 1;                                  /* increment used pointer count */
    }
    /* (optionally) realloc to 'used' pointers to size no. of pointers exactly here */
    
    if (fp != stdin)   /* close file if not stdin */
        fclose (fp);

    /* use lines as needed (simply outputting here) */
    
	/*
	for (size_t i = 0; i < used; i++) {
        printf ("line[%3zu] : %s\n", i, lines[i]);
		
		
		
        free (lines[i]);                            
    }
    */
	
	

//printf("%d\n",found);

if(strcmp(p, ".m3u") == 0 || strcmp(p, ".m3u8") == 0 || strcmp(p, ".xspf") == 0){
	
	found = 1;
	printf("%d\n",found);
} else {
	
	found = 0;
	printf("%d\n",found);
}


if(found == 1){
	
//printf("%s\n", lines[0]);
  char *programName = lines[0];
  char *arg1 = "";
  
   execlp(programName, programName, argv[1], NULL);
	
	
} else {

	  char *binaryPath = lines[1];
  char *arg1i = "";
  
 
  execl(binaryPath, binaryPath, argv[1], NULL);

}

    free (lines);       /* free pointers when done */

}

   // free(actualpath);
	


    return 0;
}







Fordításhoz szintén:

Kód: Egész kijelölése

gcc teszt.c -o teszt
kacsa.txt tartalma:

Kód: Egész kijelölése

fofi8
/root/my-applications/bin/gui_mpv
Minden kedves C iránt érdeklődőknek, hasznos időtöltést - tanulást kívánok!



Avatar
nocsak
Hozzászólások: 408
Csatlakozott: 2014.09.29. 15:01
Kapcsolat:

Re: fordítás

Hozzászólás Szerző: nocsak »

Pár gondolat a 6.3.7 és más kernelek fordításához:

- nagy az eltérés a menuconfig-ban pl.: a most aktuális legfrissebb
Screenshot 2023-06-12 at 03-37-15 The Linux Kernel Archives.png
Screenshot 2023-06-12 at 03-37-15 The Linux Kernel Archives.png (84.19 KiB) Megtekintve 638 alkalommal

általam lefordított 4.19.285 illetve 5.10.183 és 6.3.7 kernelek esetében.

- kiemelném, hogy az eddig aktuális fordítói környezet a nemzetközi puppy fejlesztők érdeme, nélkülük nem tudnék én se haladni.

- amikor a mitigations-t veszem alapul a fentebb említett 3 kernel esetében teljesen máshol szerepelnek többé vagy kevésbé opcionálhatók is ráadásul, viszont a kisebb verziójúak cserébe meghajtják a régebbi hardvereket.

- nincs univerzális kernel: függ a géptől, a gép további hardvereitől, az uefitől a biostól és a már híres-hirhedt glibc - gcc párostól! Nem véletlen, hogy az AppImageknél is feltüntetik, mely glibc alatt vagy -hoz készült. Még kísérletezés alatt egy nagyon nagy huge-zen kernel, de a tapasztalat az, hogy minél több dolgot fordítok bele annál specifikusabb lesz annak dacára, hogy pont fordítva kéne lennie.

A 6.3.7 kernel mellett a másik két fordított kernel szintúgy megtalálható a hozzászólás aláírásomban linkelt Google Drive linken a kernel mappában. Az fdrv-k a 6.3.7 standard illetve symlinked mappáiból eredeztethetők - letölthetők, külön nem duplikálom őket méretükre tekintettel. A mellékelt kernel források is igazítva a symlinked mappákon belül.

Egyelőre ennyi.

Válasz küldése

Vissza: “Programozás, alkalmazásfejlesztés”