On Mon, Sep 26, 2016 at 09:03:45AM +0000, Gonglei (Arei) wrote: > Hi Daniel, > > I'm coding cryptodev-vhost-user.c as a new cryptodev backend, > but the gcc report some linker errors: > > crypto/cryptodev-vhost-user.o: In function > `qcrypto_cryptodev_vhost_crypto_cleanup': > /mnt/sdb/gonglei/qemu.git/qemu/crypto/cryptodev-vhost-user.c:87: undefined > reference to `vhost_dev_cleanup' > crypto/cryptodev-vhost-user.o: In function > `qcrypto_cryptodev_vhost_crypto_init': > /mnt/sdb/gonglei/qemu.git/qemu/crypto/cryptodev-vhost-user.c:126: undefined > reference to `vhost_dev_init' > crypto/cryptodev-vhost-user.o: In function > `qcrypto_cryptodev_vhost_user_opened': > /mnt/sdb/gonglei/qemu.git/qemu/crypto/cryptodev-vhost-user.c:187: undefined > reference to `qemu_chr_find' > /mnt/sdb/gonglei/qemu.git/qemu/crypto/cryptodev-vhost-user.c:194: undefined > reference to `qemu_chr_fe_claim_no_fail' > crypto/cryptodev-vhost-user.o: In function > `qcrypto_cryptodev_vhost_user_event': > /mnt/sdb/gonglei/qemu.git/qemu/crypto/cryptodev-vhost-user.c:213: undefined > reference to `qemu_chr_set_reconnect_time' > crypto/cryptodev-vhost-user.o: In function > `qcrypto_cryptodev_vhost_user_init': > /mnt/sdb/gonglei/qemu.git/qemu/crypto/cryptodev-vhost-user.c:257: undefined > reference to `qemu_chr_add_handlers' > crypto/cryptodev-vhost-user.o: In function > `qcrypto_cryptodev_vhost_user_finalize': > /mnt/sdb/gonglei/qemu.git/qemu/crypto/cryptodev-vhost-user.c:353: undefined > reference to `qemu_chr_add_handlers' > /mnt/sdb/gonglei/qemu.git/qemu/crypto/cryptodev-vhost-user.c:354: undefined > reference to `qemu_chr_fe_release' > collect2: ld returned 1 exit status > make: *** [qemu-nbd] Error 1 > > Currently I only change the crypto/Makefile.objs: > > diff --git a/crypto/Makefile.objs b/crypto/Makefile.objs > index b9ad26a..575f64e 100644 > --- a/crypto/Makefile.objs > +++ b/crypto/Makefile.objs > @@ -28,6 +28,7 @@ crypto-obj-y += block-qcow.o > crypto-obj-y += block-luks.o > crypto-obj-y += cryptodev.o > crypto-obj-y += cryptodev-builtin.o > +crypto-obj-y += cryptodev-vhost-user.o
The $(crypto-obj-y) variable is intended to only contain general purpose crypto code, since it needs to be linked to all QEMU programs. Your cryptodev file is specific to system emulators, so must only be linked to the system emulator targets. Thus, it should not be added to the crypto-obj-y variable. It probably needs to be added to either common-obj-y or obj-y - I can't remember which is "best" Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|