使用Visual Studio (2019)进行Linux项目开发时遇到项目编译时提示如标题所写的:
g++: fatal error: cannot specify -o with -c, -S or -E with multiple files
仔细检查了项目代码,并没有发现问题,也尝试了移除最近改动过的代码、增加过的源码文件,均不能正常编译…(同时,也确认过新建的项目可以正常编译,证明开发环境本身还是没问题的)
继续阅读…欢迎留言、转载请注明出处
各种应用软件、硬件的使用技法记录,以备不时之需
使用Visual Studio (2019)进行Linux项目开发时遇到项目编译时提示如标题所写的:
g++: fatal error: cannot specify -o with -c, -S or -E with multiple files
仔细检查了项目代码,并没有发现问题,也尝试了移除最近改动过的代码、增加过的源码文件,均不能正常编译…(同时,也确认过新建的项目可以正常编译,证明开发环境本身还是没问题的)
继续阅读…近日,在将一个旧Android Studio项目(带native c/c++)升级了新版本gradle 4.0.1后(Android Studio版本4.0.1),发现重新clean再构建时,提示:
More than one file was found with OS independent path ‘lib/armeabi-v7a/xxx.so’. If you are using jniLibs and CMake IMPORTED targets, see https://developer.android.com/studio/preview/features#automatic_packaging_of_prebuilt_dependencies_used_by_cmake
虽然一开始也是一脸茫然,但既然提示信息里都提供了连接了,那就看一下吧,顺带一提,给出的链接我写这篇博文的时候并不是最终信息位置,最终链接在这里:https://developer.android.com/studio/releases/gradle-plugin#cmake-imported-targets ,仔细阅读了一下,发现实际上是从gradle 4.0开始就对jni的预编译依赖引用方式做出了修改:
继续阅读…Uninstall hasn’t detected folder of XXX installation…
博主的IDEA是从2018一路升上来,最近出了2020,并且还用上了JB的Toolbox,看着Manually installed有点强迫症发作,于是尝试卸载掉后用Toolbox重新安装,结果就发现了上面写到的错误提示这个坑!
参考 https://youtrack.jetbrains.com/issue/PY-35047 可行的解决方法如下:
继续阅读…最近研究GitLab的内置CI/CD功能,用到了gitlab-runner的docker executor,由于CI构建环境需求比较特殊,一时没有找到合适的image,于是决定自己做一个,网上搜索了下,找到了不需要在本地安装docker而直接在GitHub上创建包含Dockerfile的repo,然后关联Docker Hub并开启自动构建的方法,尝试了下可以可以轻松完成任务(甚至都可以完全不clone GitHub上的项目代码到本地,完全在线编辑Dockerfile就可以),虽然算是完成了目标,但后来想像其他人那样给同一个image加多个tag时,却没有在后台页面上找到直接操作的方法,Configure Automated Builds里,只能通过增加新的build rule来增加新的tag,但是这样的话即使来源分支什么配置都一样,结果image也一样,但还是build出了n个image,而不是1个image n个tag,本来以为只能安装docker命令行解决了,
继续阅读…常规方法安装完Caddy,写好Caddyfile和systemd服务配置文件后sudo systemctl start caddy,结果发现在获取证书时失败,导致整个服务启动失败:
failed to obtain certificate: acme: Error -> One or more domains had a problem:
Mar 05 09:55:48 instance-2 caddy[1846]: [ mydomain.example.com ] [ mydomain.example.com ] acme: error presenting token: presenting with standard provider server: could not start HTTPS server for challenge -> listen tcp :443: bind: permission denied
开始以为是 setcap 的问题,但是检查过后,发现安装时的设置没问题:
getcap /usr/local/bin/caddy
/usr/local/bin/caddy = cap_net_bind_service+ep
而且直接命令行启动也没有问题,那么看来应该是systemd服务配置中的问题,一番搜索后发现了这个:Caddy won’t start – Could not start HTTP server for challenge -> listen tcp :80: bind: permission denied ,参考问题中的解决方法,修改caddy.service配置为:
继续阅读…最近在调试k2p官改( V2.0D )的ipv6时,发现怎么都看不到pppoe拨号时的详细信息,无奈之下发现了pppd的写文件log的方式,修改/etc/config/network中的wan接口(或对应uci设置方式):
config interface ‘wan’
option ifname ‘eth1.2’
option peerdns ‘1’
option ignore ‘1’
option dns_opt ‘0’
option pppoe_dns_mode ‘0’
option dhcp_dns_mode ‘0’
option macoperate ‘1’
option DiaMode ‘0’
option mtu ‘1500’
option ipv6 ‘1’
option pppd_options ‘debug logfile /var/log/ppp.log’
option status ‘up’
option proto ‘dhcp’
option ignore_mtu_change_pppoe ‘0’
…
加入 option pppd_options ‘debug logfile /var/log/ppp.log’ 这行,从而让pppd的调试信息输出到单独指定的日志文件/var/log/ppp.log中,这样便可看到pppd拨号时的详细log了。但是,之前的y1s同样是OpenWrt系统,却不需要写文件的方式,直接加上debug这个option就可以了,后来一通搜索后发现了原来是系统的log level设置所致:
继续阅读…最近发现宽带IPv6通了, https://ipv6-test.com 测试可以正确检测出公网IPv6地址(检测到的是Win10 DHCP出来的临时地址),但是又发现ICMP一直不通,于是找了个也有v6地址的朋友帮忙测试一下,发现果然是ping不通,但是连接功能正常,于是想到是系统自带防火墙(Win10 1903,不确定其它版本是否也有此问题…)的问题,结果在防火墙设置里怎么都改不好,后来在microsoft官方上看到了这个: https://answers.microsoft.com/en-us/windows/forum/windows_10-networking/windows-10-firewall-filtering-icmp/527551d0-e477-4dd6-a0a0-eae724940ba3 ,于是照做:
netsh firewall set icmpsetting type=all mode=enable
完事后再测,ICMPv6就能通了,特此记录,以备后需。