Göra en Text editor för Linux. [var: GCC och Unicode]
Re: Göra en Text editor för Linux. [var: GCC och Unicode]
Du kan ju alltid packetera appen som snap, flatpak eller appimage så kan den distribueras fritt. Dock kanske det kan bli knöligt med filhanteringen pga sandboxing.
Annars har ubuntu PPA för utomstående repositories.
Annars har ubuntu PPA för utomstående repositories.
Re: Göra en Text editor för Linux. [var: GCC och Unicode]
Tror inte det finns en chans att få med den i någon dist utan att släppa källkoden.
Ska den med i en dist måste den kunna kompileras för massor av olika målsystem och arkitekturer.
Ska den med i en dist måste den kunna kompileras för massor av olika målsystem och arkitekturer.
Re: Göra en Text editor för Linux. [var: GCC och Unicode]
Ja, det är ju ett stort problem. Det blir bara min egen hemsida, det kan räcka en bit i varje fall. Tänker bara kompilera för 32/64 PC och 32 ARM till raspberry. Blir för mycket
om femtioelva olika skall stödjas. Utan att testa kan det dessutom bli hur som helst. Finns redan allt för mycket junkware i omlopp.
om femtioelva olika skall stödjas. Utan att testa kan det dessutom bli hur som helst. Finns redan allt för mycket junkware i omlopp.
Re: Göra en Text editor för Linux. [var: GCC och Unicode]
Kan väl funka med rpmfusion-nonfree kanske ?
Har lite dålig koll på reglerna där men jag tror inte källkoden behöver finnas tillgänglig ?
https://rpmfusion.org/RPM%20Fusion
Har lite dålig koll på reglerna där men jag tror inte källkoden behöver finnas tillgänglig ?
https://rpmfusion.org/RPM%20Fusion
Re: Göra en Text editor för Linux. [var: GCC och Unicode]
Finns det möjlighet i Linux att ha en dependency som inte förhindrar att programmet körs om denna inte behövs? När/om den behövs laddas den först då, eller ett felmeddelande visas om den skulle saknas.
Re: Göra en Text editor för Linux. [var: GCC och Unicode]
Du menar som valbara pluginer? Isf, kolla på dlopen(3)/dlsym(3).
Re: Göra en Text editor för Linux. [var: GCC och Unicode]
Nej, inte valbar.
En udda funktionalitet som i sig tar väldigt liten plats, men lägger till en dependency som inte alltid finns installerad, även om den nog oftast gör det. Den skall inte bli en föutsättning förän någon verkligen använder den udda funktionen.
Mekanismen för detta är nog väldigt nära valbara plugins. Får se vad det Du nämner är för något. Det som eftersöks är att vid behov ladda extra lib.
En udda funktionalitet som i sig tar väldigt liten plats, men lägger till en dependency som inte alltid finns installerad, även om den nog oftast gör det. Den skall inte bli en föutsättning förän någon verkligen använder den udda funktionen.
Mekanismen för detta är nog väldigt nära valbara plugins. Får se vad det Du nämner är för något. Det som eftersöks är att vid behov ladda extra lib.
Re: Göra en Text editor för Linux. [var: GCC och Unicode]
Låter som dlopen/dlsym är det du vill ha, möjligen kan man tricka med "weak symbol linkage" istället.
Re: Göra en Text editor för Linux. [var: GCC och Unicode]
Tackar så mycket för att Du pekat åt rätt håll. Det ser ut att vara det som finns, men kanske inte exakt vad jag ville ha.
Ser stökigt ut med att bara få en pekare till den sökta funktionen. Är denna void* en vanlig funktionspekare som kan castas till en egen typedef av en funktion med rätt parameters?
Ser stökigt ut med att bara få en pekare till den sökta funktionen. Är denna void* en vanlig funktionspekare som kan castas till en egen typedef av en funktion med rätt parameters?
Re: Göra en Text editor för Linux. [var: GCC och Unicode]
Du kanske kan ha ett minimalt loader-program som man startar editorn med, i vilken man kollar upp vilka resurser som finns tillgängliga i den aktuella miljön, och därefter startar man den egentliga editorn med t ex kommandoradsparametrar eller med förberedd config-fil för att signalera vad editorn har tillgängligt att spela med, innan man stänger loadern och låter editorn rulla vidare.
Vi fick göra liknande på 90-talet med tidiga affärssystem på Windows som krävde lokalt klientprogram på varje användares dator, där vi i loadern synkade in de senaste filerna till klientdatorn och gjorde nödvändiga COM- och OLE-registreringar, innan vi startade det egentliga klientprogrammet och avslutade loadern.
Tack och lov blev allt web-baserat strax efter.
Sen finns det saker man kan göra i t ex Perl men det är möjligtvis en egenskap av managed code, kontra native code i C som du sysslar så det kanske inte är möjligt.
Det finns många sätt på det temat, men det mest generella är att man wrappar sina laddningar av libraries i run-time i eval() och testar om laddningen lyckades.
Men det låter som att du kanske över-optimerar användarupplevelsen.
Användaren kanske måste förväntas kunna starta editorn i ett safe-mode om finesser i miljön saknas, eller starta den med parametrar på kommandoraden som skriver in default-värden i en config-fil som editorn sedan startar med utan att man återigen behöver ange parametrarna, för att på så sätt stänga av funktioner som kräver något som miljön inte kan leverera.
Vi fick göra liknande på 90-talet med tidiga affärssystem på Windows som krävde lokalt klientprogram på varje användares dator, där vi i loadern synkade in de senaste filerna till klientdatorn och gjorde nödvändiga COM- och OLE-registreringar, innan vi startade det egentliga klientprogrammet och avslutade loadern.
Tack och lov blev allt web-baserat strax efter.
Sen finns det saker man kan göra i t ex Perl men det är möjligtvis en egenskap av managed code, kontra native code i C som du sysslar så det kanske inte är möjligt.
Det finns många sätt på det temat, men det mest generella är att man wrappar sina laddningar av libraries i run-time i eval() och testar om laddningen lyckades.
Men det låter som att du kanske över-optimerar användarupplevelsen.
Användaren kanske måste förväntas kunna starta editorn i ett safe-mode om finesser i miljön saknas, eller starta den med parametrar på kommandoraden som skriver in default-värden i en config-fil som editorn sedan startar med utan att man återigen behöver ange parametrarna, för att på så sätt stänga av funktioner som kräver något som miljön inte kan leverera.
Re: Göra en Text editor för Linux. [var: GCC och Unicode]
Det där lät stökigt, men sådant är det inte alls.
Problemet är en mycket "smal" funktion som kräver pulse_simple och vill inte skapa en "hård" dependency på denna till följd av en udda funktion.
Tänkte först ha detta som en specialversion, men är det möjligt vill jag undvika detta. Är inget jag vill lägga tid på nu om det är stökigt. Finns annat som är verkligt avgörande att fixa till först. Hade hoppats det var enkelt.
Problemet är en mycket "smal" funktion som kräver pulse_simple och vill inte skapa en "hård" dependency på denna till följd av en udda funktion.
Tänkte först ha detta som en specialversion, men är det möjligt vill jag undvika detta. Är inget jag vill lägga tid på nu om det är stökigt. Finns annat som är verkligt avgörande att fixa till först. Hade hoppats det var enkelt.
Re: Göra en Text editor för Linux. [var: GCC och Unicode]
Här finns en enkel beskrivning och ett litet exempel:
https://tldp.org/HOWTO/Program-Library- ... aries.html
Enklaste borde väl vara att göra en typedef eller en #define för de funktioner som du behöver. Det var länge sedan jag gjorde detta så jag är inte helt säker på enklaste sättet idag.
/J
https://tldp.org/HOWTO/Program-Library- ... aries.html
Enklaste borde väl vara att göra en typedef eller en #define för de funktioner som du behöver. Det var länge sedan jag gjorde detta så jag är inte helt säker på enklaste sättet idag.
/J
Re: Göra en Text editor för Linux. [var: GCC och Unicode]
Tack till Er alla för hjälpen.
Teknikens under, det funkade med en typedef. Första gången misslyckades p.g.a. sk*t bakom tangenterna, inga "" kring funktionsnamnet i dlsym. Det idiotiska felmeddelandet från gcc gjorde jag trodde allt var helt fel.
Då är frågan, byter jag bara en dependency mot en annan? Alla har inte pulse installerat, men finns dl där alltid? m är väl något som alltid finns?
Det nämns reference counting i samband med dlopen. Vad sker där t.ex. om programmet segfaultar och dlclose aldrig utförs? Eller det hanteras av sig själv när instansen tas bort?
Teknikens under, det funkade med en typedef. Första gången misslyckades p.g.a. sk*t bakom tangenterna, inga "" kring funktionsnamnet i dlsym. Det idiotiska felmeddelandet från gcc gjorde jag trodde allt var helt fel.
Då är frågan, byter jag bara en dependency mot en annan? Alla har inte pulse installerat, men finns dl där alltid? m är väl något som alltid finns?
Det nämns reference counting i samband med dlopen. Vad sker där t.ex. om programmet segfaultar och dlclose aldrig utförs? Eller det hanteras av sig själv när instansen tas bort?
Re: Göra en Text editor för Linux. [var: GCC och Unicode]
Kul att du har fått igång det. libdl ingår i glibc och killgissar jag lite så bör libdl bara vara ett tunnt skal ovanpå funktioner som programladdaren (ld) själv använder så Linuxdistarna som har separerat (paketmässigt) libdl från glibc är nog ovanliga.
Referensräkning är ju för att OS/processen inte ska ladda ur libbet förrän alla har laddat ur det samt undvika att ladda det om det behövs flera gånger. Din process a kan ju göra dlopen på libB samtidigt som a också är dynamiskt mot libE som i sin tur gör dlopen på libB.
Segfaults är ju en krasch men OSet städar så gott det går när processen är död. Den enda resurs jag varit med om som är lite knepig att få bortstädad vid krasch är delade SysV minnen och semaforer, men det går det också.
Referensräkning är ju för att OS/processen inte ska ladda ur libbet förrän alla har laddat ur det samt undvika att ladda det om det behövs flera gånger. Din process a kan ju göra dlopen på libB samtidigt som a också är dynamiskt mot libE som i sin tur gör dlopen på libB.
Segfaults är ju en krasch men OSet städar så gott det går när processen är död. Den enda resurs jag varit med om som är lite knepig att få bortstädad vid krasch är delade SysV minnen och semaforer, men det går det också.
Re: Göra en Text editor för Linux. [var: GCC och Unicode]
OK.
Vet inte hur jag tänkte där, fick på något sätt för mig att den räknade för alla instanser som använde ett visst lib...
Jo, det hr jag märkt att /var/lock/ lätt får "glömda" filer som måste rensas när vissa program dyker. Sådant har jag inget av, så om inget lib hittar på något skall det vara rent från den typen av problem.
Vet inte hur jag tänkte där, fick på något sätt för mig att den räknade för alla instanser som använde ett visst lib...
Jo, det hr jag märkt att /var/lock/ lätt får "glömda" filer som måste rensas när vissa program dyker. Sådant har jag inget av, så om inget lib hittar på något skall det vara rent från den typen av problem.