首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用WiringPI创建共享库

使用WiringPI创建共享库
EN

Stack Overflow用户
提问于 2018-11-22 16:34:21
回答 1查看 159关注 0票数 0

我想创建一个共享库,因为JNI需要这个库。

我有两个文件

PiezoSpeaker.c

代码语言:javascript
复制
#include "PiezoSpeaker.h"
#include <stdio.h>

#include <string.h>
#include <wiringPi.h>
#include <softTone.h>

JNIEXPORT void JNICALL Java_PiezoSpeaker_tone__I
(JNIEnv *env, jobject jobject, jint khz) {
wiringPiSetup();
softToneCreate(29);
softToneWrite (29, khz);
}

JNIEXPORT void JNICALL Java_PiezoSpeaker_tone__II
(JNIEnv *env, jobject jobject, jint khz, jint duration) {

}

PiezoSpeaker.h

代码语言:javascript
复制
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class PiezoSpeaker */

#ifndef _Included_PiezoSpeaker
#define _Included_PiezoSpeaker
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     PiezoSpeaker
 * Method:    tone
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_PiezoSpeaker_tone__I
  (JNIEnv *, jobject, jint);

/*
 * Class:     PiezoSpeaker
 * Method:    tone
 * Signature: (II)V
 */
JNIEXPORT void JNICALL Java_PiezoSpeaker_tone__II
  (JNIEnv *, jobject, jint, jint);

#ifdef __cplusplus
}
#endif
#endif

我和gcc一起编译了这篇文章

代码语言:javascript
复制
gcc -c -fPIC -I"/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/include/" -I"/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/include/linux" -IwiringPi -Ipthread PiezoSpeaker.c

gcc -shared -o share.so PiezoSpeaker.o

我变成了错误,符号是未定义的。gcc命令是错误的,因为它不包含wiringPi库。如何链接包含WiringPi库的库?

EN

回答 1

Stack Overflow用户

发布于 2019-08-10 02:01:36

根据您正在使用的WiringPi版本以及构建和安装它的方式,调用可能会发生变化。假设您使用的是带有WiringPi - github的Rasberry Pi (不是不推荐使用的版本,而是非官方的镜像),并且您已经在本地将repo克隆到您的Rasberry Pi中。

代码语言:javascript
复制
cd WiringPi
./build 
# add /usr/local/lib to /etc/ld.so.conf
sudo ldconfig

上图摘自WiringPi INSTALL

然后,对于您的编译行,您将需要

代码语言:javascript
复制
gcc -c -fPIC -I"/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/include/" -I"/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/include/linux" -lwiringPi -pthread -lrt -lm PiezoSpeaker.c

  1. -lwiringPi -- gets wiringPi
  2. -lrt and -lm --注意链接到wiringPi本身和

中的依赖项

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53426768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档