/*best.c*/
#include "best.h"
#include
char* who = "jape";
extern char* whoisbest()
{
return who;
}
EXPORT_SYMBOL_GPL(who);
EXPORT_SYMBOL_GPL(whoisbest);
MODULE_LICENSE ("GPL");
/*best.h*/
#include
extern char* whoisbest(void);
extern char* who;
/*compile*/
make -I./ -Wimplicit-int -Wstrict-prototypes -C /usr/src/linuz -C ./ M=/home/jani/lkmssyscall modules
/*japevalue.c*/
#include
#include
#include
#define MAX_TRY 1024;
MODULE_LICENSE ("GPL");
static int __init my_init (void)
{
printk("%ld", (long)japeflag);
return 0;
}
static void my_exit (void)
{
printk("%ld", (long)japeflag);
}
module_init(my_init);
module_exit(my_exit);
/*kerlo.c*/
#include
#include
#include
#include
#include "best.h"
int japeflag=15;
#define MAX_TRY 1024;
MODULE_LICENSE ("GPL");
static int __init my_init (void)
{
printk("%ld", (long)jiffies);
return 0;
}
static void my_exit (void)
{
printk("%ld", (const unsigned int)jiffies msecs_to_jiffies);
printk(whoisbest());
}
module_init(my_init);
module_exit(my_exit);
/*Makefile*/
obj-m = kerlo.o best.o
#include "best.h"
#include
char* who = "jape";
extern char* whoisbest()
{
return who;
}
EXPORT_SYMBOL_GPL(who);
EXPORT_SYMBOL_GPL(whoisbest);
MODULE_LICENSE ("GPL");
/*best.h*/
#include
extern char* whoisbest(void);
extern char* who;
/*compile*/
make -I./ -Wimplicit-int -Wstrict-prototypes -C /usr/src/linuz -C ./ M=/home/jani/lkmssyscall modules
/*japevalue.c*/
#include
#include
#include
#define MAX_TRY 1024;
MODULE_LICENSE ("GPL");
static int __init my_init (void)
{
printk("%ld", (long)japeflag);
return 0;
}
static void my_exit (void)
{
printk("%ld", (long)japeflag);
}
module_init(my_init);
module_exit(my_exit);
/*kerlo.c*/
#include
#include
#include
#include
#include "best.h"
int japeflag=15;
#define MAX_TRY 1024;
MODULE_LICENSE ("GPL");
static int __init my_init (void)
{
printk("%ld", (long)jiffies);
return 0;
}
static void my_exit (void)
{
printk("%ld", (const unsigned int)jiffies msecs_to_jiffies);
printk(whoisbest());
}
module_init(my_init);
module_exit(my_exit);
/*Makefile*/
obj-m = kerlo.o best.o
Vastaukset 8
Vanhimmat
ohjelman käynnistys: sudo insmod kerlo.ko sitten sudo insmod best.ko
ohjelman gui: sudo dmesg | tail
ohjelman sammutus: rmmod kerlo.ko sitten rmmod best.ko
a.c:1: error: stray '\302' in program
a.c:1: error: stray '#' in program
a.c:1: error: expected '=', ',', ';', 'asm' or '__attribute__' at end of input
WYSE_SX0 embedded@krisu-desktop:~/scripts$
niin, kaikkien noiden kääntö pysähtyy virheeseen, koska #include on virheellinen.
mitä lienee muita merkkejä tämä chatti imaissut. :)
nää puuttuu includien perästä: linux/module.h linux/kernel.h linux/init.hlinux/ jiffies.h linux/vermagic.h linux/compiler.h "best.h"
noi vielä nuoli oikealle ja nuoli vasemmalle merkkien sisään niin bueno.
tai siis korjaan otsikkotiedostot nuoli vasemmalle ja nuoli oikealle merkkien sisään ja tuo linuz on dynaaminen linkki asennetun kernelin versiota vastaaviin headersseihin (otsikkotiedostot the symbols)
tiedostoon kerlo korvaa lähes samankaltainen rivi tällä: printk("%lu", (long unsigned int) (jiffies+msecs_to_jiffies));
kohtaan ohjelman käynnistys vaihda järjestys: ensin insmod best.ko sitten insmod kerlo.ko näin symbol not found ilmoitusta ei ilmene