编写Linux内核IDE推荐,嵌入式Linux驱动开发IDE - Visual Studio Code配置使用(强烈推荐!!!)...

目录

一  安装visual studio code(简称vscode)

二   vscode新建工作空间

三  添加头文件搜索路径

四  添加宏定义

五  按F12或者"Ctrl+单击"可快速定位到定义与自动补全功能

六  设置左侧目录不自动展开

七  设置隐藏文件夹

八  编译生成可执行文件

一  安装visual studio code(简称vscode)

方式一: 直接在ubuntu自带应用商店搜索安装(该方法可能导致无法在vscode中输入中文,推荐使用方式二).

方式二: 官网下载deb安装包后执行 sudo dpkg -i  XXX.deb 或者从文件夹双击.下载链接:https://code.visualstudio.com/Download

二   vscode新建工作空间

1. 安装好vscode后,打开程序,在欢迎界面点击"Add workspace folder"然后找到linux-3.4.2文件夹,该文件夹是交叉编译过后的linux源码,如何配置并交叉编译linux内核不是本文重点,这里略过.

2. 新建一个文件夹linux_drv ,该文件夹是用来保存你自己的编写的驱动还有Makefile文件的,文件名与路径随意. 然后在vscode软件中点击"File->add folder to workspace"

3. "File->save workspace as ...".保存工作空间,命名vscode_workspace,名字与路径随意.

三  添加头文件搜索路径

按快捷键"Ctrl + Shift + P", 然后搜索>Edit configurations ,单击后,会打开一个c_cpp_properties.json文件,该文件位置可以把鼠标放到标签栏下查看,一般位于隐藏的.vscode下, 按照如下方式添加头文件, 你需要根据自己的路径,还有开发板类型选择,我这里使用的是linux-3.4.2的内核, s3c2440的开发板.

"includePath": [

"${workspaceFolder}/**",

"/home/ningjw/linux-3.4.2/include",

"/home/ningjw/linux-3.4.2/arch/arm/include",

"/home/ningjw/linux-3.4.2/arch/arm/plat-samsung/include",

"/home/ningjw/linux-3.4.2/arch/arm/mach-s3c24xx/include"

],

四  添加宏定义

1. 宏定义也是在c_cpp_properties.json文件中添加,放在"defines": [ ] 中的方括号中.

2. 宏定义文件位于linux-3.4.2/include/generated/autoconf.h文件中, 这里需要复制一份autoconf.h对该文件进行修改:  原来的格式为  #define CONFIG_IP6_NF_MATCH_AH_MODULE 1   需要修改为  "CONFIG_IP6_NF_MATCH_AH_MODULE 1"

3. 小编使用sublime text3的列编辑模式对该文件进行修改.

删除文件头部的/* */注释

Ctrl+A 全选

Ctrl+Shift+L 进入列选模式

方向键定位到列尾,添加英文双引号,添加英文逗号,

在文件头部添加 "__KERNEL__",

4.按上述修改好后添加到"defines": [ ] 中的方括号中,会发现还会报错,继续修改, 定位到报错处,发现是由于双引号引起的,将双引号前加一个转义字符 ,如下图所示,另外还需要去掉最后一个宏的逗号, c_cpp_properties.json就修改完成了.

3f288ee285423cc6e29fa526842ca321.png

5. 需要保证liux-3.4.2与linux_drv文件夹下的.vscode目录下都有这样的一份c_cpp_properties.json文件,该文件可以多带带保存下来,下次直接复制粘贴就行.完整的文件如下:

{

"configurations": [

{

"name": "Linux",

"includePath": [

"${workspaceFolder}/**",

"/home/ningjw/linux-3.4.2/include",

"/home/ningjw/linux-3.4.2/arch/arm/include",

"/home/ningjw/linux-3.4.2/arch/arm/plat-samsung/include",

"/home/ningjw/linux-3.4.2/arch/arm/mach-s3c24xx/include"

],

"defines": [

"__KERNEL__",

"CONFIG_IP6_NF_MATCH_AH_MODULE 1",

"CONFIG_NLS_CODEPAGE_861_MODULE 1",

"CONFIG_NF_CONNTRACK_H323_MODULE 1",

"CONFIG_SCSI_DMA 1",

"CONFIG_KERNEL_GZIP 1",

"CONFIG_IP_NF_TARGET_REDIRECT_MODULE 1",

"CONFIG_CRC32 1",

"CONFIG_I2C_BOARDINFO 1",

"CONFIG_HAVE_AOUT 1",

"CONFIG_AEABI 1",

"CONFIG_MTD_NAND_S3C2410 1",

"CONFIG_BT_RFCOMM_MODULE 1",

"CONFIG_LEDS_TRIGGER_HEARTBEAT_MODULE 1",

"CONFIG_XZ_DEC_IA64 1",

"CONFIG_INOTIFY_USER 1",

"CONFIG_S3C2440_XTAL_16934400 1",

"CONFIG_NF_CONNTRACK_NETBIOS_NS_MODULE 1",

"CONFIG_NETWORK_FILESYSTEMS 1",

"CONFIG_CRYPTO_MD4_MODULE 1",

"CONFIG_BT_HCIBFUSB_MODULE 1",

"CONFIG_ARCH_SUSPEND_POSSIBLE 1",

"CONFIG_INLINE_WRITE_UNLOCK_IRQ 1",

"CONFIG_LEDS_PCA955X_MODULE 1",

"CONFIG_BLK_DEV_NBD_MODULE 1",

"CONFIG_TCP_CONG_HTCP_MODULE 1",

"CONFIG_EXT4_FS_POSIX_ACL 1",

"CONFIG_NETFILTER_XT_MATCH_HELPER_MODULE 1",

"CONFIG_SSB_POSSIBLE 1",

"CONFIG_NF_NAT_SIP_MODULE 1",

"CONFIG_S3C_ADC 1",

"CONFIG_NETFILTER_XT_MATCH_STATISTIC_MODULE 1",

"CONFIG_NLS_CODEPAGE_855_MODULE 1",

"CONFIG_USB_OHCI_LITTLE_ENDIAN 1",

"CONFIG_FSNOTIFY 1",

"CONFIG_BLK_DEV_LOOP_MIN_COUNT 8",

"CONFIG_INET6_TUNNEL_MODULE 1",

"CONFIG_NF_CONNTRACK_SIP_MODULE 1",

"CONFIG_CRYPTO_MANAGER_DISABLE_TESTS 1",

"CONFIG_HAVE_KERNEL_LZMA 1",

"CONFIG_IP_NF_QUEUE_MODULE 1",

"CONFIG_DEFAULT_SECURITY_DAC 1",

"CONFIG_KTIME_SCALAR 1",

"CONFIG_IP6_NF_MANGLE_MODULE 1",

"CONFIG_SCSI_CONSTANTS 1",

"CONFIG_NETFILTER_XT_MATCH_REALM_MODULE 1",

"CONFIG_BT_HCIBPA10X_MODULE 1",

"CONFIG_S3C2410_WATCHDOG 1",

"CONFIG_IPV6_MODULE 1",

"CONFIG_CRYPTO_AEAD_MODULE 1",

"CONFIG_BQL 1",

"CONFIG_DEFAULT_TCP_CONG "cubic"",

"CONFIG_UEVENT_HELPER_PATH "/sbin/hotplug"",

"CONFIG_USB_DEVICEFS 1",

"CONFIG_CPU_LLSERIAL_S3C2440_ONLY 1",

"CONFIG_USB_STORAGE_USBAT_MODULE 1",

"CONFIG_NF_NAT_PROTO_GRE_MODULE 1",

"CONFIG_NLS_ISO8859_7_MODULE 1",

"CONFIG_MMC_S3C_PIO 1",

"CONFIG_S3C24XX_GPIO_EXTRA 0",

"CONFIG_IP6_NF_TARGET_REJECT_MODULE 1",

"CONFIG_WLAN 1",

"CONFIG_S3C2410_CLOCK 1",

"CONFIG_NAMESPACES 1",

"CONFIG_DEFAULT_MESSAGE_LOGLEVEL 4",

"CONFIG_SERIAL_SAMSUNG 1",

"CONFIG_NETFILTER_XT_TARGET_RATEEST_MODULE 1",

"CONFIG_LEGACY_PTYS 1",

"CONFIG_XFRM_IPCOMP_MODULE 1",

"CONFIG_CRYPTO_RNG2_MODULE 1",

"CONFIG_NETFILTER_NETLINK_QUEUE_MODULE 1",

"CONFIG_MSDOS_FS 1",

"CONFIG_CFG80211_MODULE 1",

"CONFIG_NLS_CODEPAGE_1250_MODULE 1",

"CONFIG_HAVE_PROC_CPU 1",

"CONFIG_LZO_DECOMPRESS 1",

"CONFIG_IOMMU_SUPPORT 1",

"CONFIG_NLS_CODEPAGE_862_MODULE 1",

"CONFIG_NFSD_MODULE 1",

"CONFIG_USB 1",

"CONFIG_CRYPTO_HMAC_MODULE 1",

"CONFIG_ETHERNET 1",

"CONFIG_BRANCH_PROFILE_NONE 1",

"CONFIG_SCSI_SCAN_ASYNC 1",

"CONFIG_CRC_ITU_T_MODULE 1",

"CONFIG_DQL 1",

"CONFIG_FRAMEBUFFER_CONSOLE 1",

"CONFIG_SND_SEQUENCER_MODULE 1",

"CONFIG_IP_NF_ARPTABLES_MODULE 1",

"CONFIG_BCMA_POSSIBLE 1",

"CONFIG_FORCE_MAX_ZONEORDER 11",

"CONFIG_SND_SOC 1",

"CONFIG_PRINTK 1",

"CONFIG_NF_CONNTRACK_PROC_COMPAT 1",

"CONFIG_TIMERFD 1",

"CONFIG_MTD_CFI_I2 1",

"CONFIG_CRYPTO_AUTHENC_MODULE 1",

"CONFIG_SHMEM 1",

"CONFIG_MTD 1",

"CONFIG_HAVE_ARCH_JUMP_LABEL 1",

"CONFIG_MMC_BLOCK_MINORS 8",

"CONFIG_NLS_CODEPAGE_850 1",

"CONFIG_DNOTIFY 1",

"CONFIG_INPUT_MOUSEDEV 1",

"CONFIG_CRYPTO_DES_MODULE 1",

"CONFIG_ENABLE_MUST_CHECK 1",

"CONFIG_NLS_CODEPAGE_437 1",

"CONFIG_MTD_NAND_IDS 1",

"CONFIG_EXPORTFS_MODULE 1",

"CONFIG_SND_MIXER_OSS_MODULE 1",

"CONFIG_IP6_NF_MATCH_MH_MODULE 1",

"CONFIG_SERIO 1",

"CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS 1",

"CONFIG_RTC_INTF_SYSFS 1",

"CONFIG_USB_EMI62_MODULE 1",

"CONFIG_LEDS_TRIGGER_TIMER_MODULE 1",

"CONFIG_SND_OSSEMUL 1",

"CONFIG_HAVE_BPF_JIT 1",

"CONFIG_ZLIB_INFLATE 1",

"CONFIG_DEBUG_LL 1",

"CONFIG_HWMON 1",

"CONFIG_NLS_ISO8859_2_MODULE 1",

"CONFIG_IP_PNP 1",

"CONFIG_LEDS_S3C24XX_MODULE 1",

"CONFIG_RTC_INTF_PROC 1",

"CONFIG_PM_CLK 1",

"CONFIG_STACKTRACE_SUPPORT 1",

"CONFIG_USB_DEVICE_CLASS 1",

"CONFIG_LOCKD 1",</

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值