insmod: ERROR: could not insert module hello.ko

We tried to write a simple class driver framework which will create a directory in /sys/class, we were able to compile the code but got the following error while trying to install the driver as,

$ sudo insmod hello.ko 
insmod: ERROR: could not insert module hello.ko: Unknown symbol in module 
$ dmesg

[ 7514.340407] hello: Unknown symbol __class_register (err 0)
[ 7514.340436] hello: Unknown symbol class_unregister (err 0) 

Solution :

The function __class_create is exported only for GPL modules (exported with EXPORT_SYMBOL_GPL). So, you need to use a GPL license with MODULE_LICENSE macro to make use of that function.

Hence if you append your driver code with


Subscribe with Valid Email Id to receive updates in Inbox. ( Secured by Google FeedBurner )

   


MODULE_LICENSE("GPL"); 


and recompile driver and try insmod again, it will definately work and you will not get such errors.

Reference – https://stackoverflow.com/questions/29578931/unknown-symbol-class-create-err-0

lynxbee_ezoic

Leave a Comment

Android Android Build system Android Commands Android Java Applications Application Libraries Application Stack / User Interface Bash / Shell Scripts Bluetooth driver Cloud Technologies Commands and Packages Compilation Content Management System Core Kernel C Programs Development & Build Development, Debugging and Performance Tools Development Environment Setup Django & REST Api Errors & Failures Git Hardware Platforms HTML JAVA Programs Linux, OS Concepts and Networking Linux Device Drivers Linux Host, Ubuntu, SysAdmin Linux Kernel Linux Networking Middleware Libraries, HAL Multimedia Audio, Video, Images NDK / Middleware / HAL OS Concepts PHP Programming Languages Scripting and Automation Search Engine Optimisation ( SEO ) Social Media Source Code Management ( SCM ) System Administration, Security Testing and Debugging Uncategorized Web design and development Website Hosting Wordpress Yocto / Bitbake / Openembedded