-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
linking issue - mmal: mmal_component_create_core: could not find component 'vc.ril.video_render' (master branch) #303
Comments
Taking just your first couple of lines, that sounds like a duplicate of #178 - the optimiser has been too thorough and removed the constructor that registers the VideoCore MMAL components. I'm not sure what you're trying to impart with the linker dump. |
well, i suppose that "undefined symbol" is probably not ok, at least in some cases. but i'm not familiar with how linker works so maybe it is correct. anyway, i was able to remove some of the issues by modifying (or adding) target_link_libraries, like "target_link_libraries(dtovl fdt)", "target_link_libraries (mmal_core mmal_util vcos)" etc. i also found out that mmal_core needs mmal_util and mmal_util needs mmal_core which cmake did not like when i added the missing libraries. so as i do not understand this stuff, i'd rather have someone else to have a look at it and provide appropriate fix. |
@fordfrog You are right. At least in the case of libdtovl, the libfdt.a archive should be built into the shared library, rather than being an unresolved dependency. |
@pelwell any idea, what's causing that mmal error? is it related to the undefined symbols or the issue is different? |
I believe all of the mmal undefined symbols are expected, in that they are exported by other shared libraries. @6by9's explanation sounds plausible. MMAL uses the "constructor" attribute to mark functions that should be called before entering main(). If that mechanism is failing then the components will not be registered, which will lead to the error you saw. Note that this is a runtime error, not a linking error. |
What exactly have you done? Steps to reproduce please. It appears that Kodi isn't asking for libmmal_vc_client.so, and that is what will register the VideoCore MMAL components via the constructor (see #178). That's probably an issue with your build of Kodi, not the userland libraries themselves. |
do i get it right that kodi should use mmal_vc_client instead of mmal, mmal_core and mmal_util? |
As well as. Please read #178, it even links to plexinc/OpenELEC.tv@3e46d68 which is the OpenELEC change to amend the linker flags. You probably want something similar. |
I think this is the same thing on Gentoo: |
@ED6E0F17 yes, it is. i was told elsewhere that removing --as-needed is not a fix but workaround, so i was looking for another solution for kodi but found none. compiling c stuff is not what i am experienced with. |
Summary: This is a duplicate of #178, and should be closed as such. If the community wishes to come up with an alternative then please put it forward. The requirements are that:
The only thing that really knows it wants to use VideoCore accelerated components is your application, so that is really what has to signal that it wants libmmal_vc_client. |
On the VPU the way I got round this was to put some key function like a constructor (or a reference to it) in a |
Closing as duplicate of #178 |
this error occurs when trying to play video in kodi using dvdplayer.
here are mmal libs that kodi links against:
i'm not that familiar with linking stuff, but there are some libraries with undefined symbols. executables matching /opt/vc/bin/ and /opt/vc/lib/plugins/_so are ok but there are issues for /opt/vc/lib/_so (including complete list):
The text was updated successfully, but these errors were encountered: