Warning: DOMDocument::loadXML(): Space required after the Public Identifier in Entity, line: 1 in /home/public/wp-content/plugins/wordpress-amazon-associate/APaPi/AmazonProduct/Result.php on line 149
Warning: DOMDocument::loadXML(): SystemLiteral " or ' expected in Entity, line: 1 in /home/public/wp-content/plugins/wordpress-amazon-associate/APaPi/AmazonProduct/Result.php on line 149
Warning: DOMDocument::loadXML(): SYSTEM or PUBLIC, the URI is missing in Entity, line: 1 in /home/public/wp-content/plugins/wordpress-amazon-associate/APaPi/AmazonProduct/Result.php on line 149
Warning: Invalid argument supplied for foreach() in /home/public/wp-content/plugins/wordpress-amazon-associate/APaPi/AmazonProduct/Result.php on line 160
I’ve been having a go at device driver programming on linux, and the obvious place to start was the well-known O’Reilly book on the subject. Unfortunately, it appears that the example code hasn’t been updated in a long time, and is incompatible with the current kernel in a lot of ways. Most of the problems are reasonably easy to figure out, and make a good exercise for the reader (I’m maintaining a git repo here), but one of the Kbuild problems was particularly frustrating.
When you attempt to build modules using the code provided, the build fails with:
make -C /lib/modules/2.6.39.3/build M=$PWD make[1]: Entering directory `/home/timm/dev/linux-2.6.39.3' Building modules, stage 2. MODPOST 1 modules CC /home/timm/dev/device_drivers/scull/scull.mod.o /home/timm/dev/device_drivers/scull/scull.mod.c:9:2: error: implicit declaration of function âKBUILD_STRâ /home/timm/dev/device_drivers/scull/scull.mod.c:9:10: error: âscullâ undeclared here (not in a function) make[2]: *** [/home/timm/dev/device_drivers/scull/scull.mod.o] Error 1 make[1]: *** [modules] Error 2 make[1]: Leaving directory `/home/timm/dev/linux-2.6.39.3' make: *** [default] Error 2
It turns out that the problem is down to the following line in the makefile:
EXTRA_CFLAGS += -I$(LDDINC)
I’m not entirely sure what this is supposed to do, and why it causes the failure. But for me, removing this line was enough to get the build working again.